add enable_periodically_report_state AppConf, default is false

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent b6a2488d2e
commit 8ff9c91c23
2 changed files with 24 additions and 12 deletions

View File

@@ -37,6 +37,8 @@ type AppConf struct {
GeoipFile *string `toml:"geoip_file"` GeoipFile *string `toml:"geoip_file"`
GeositeFolder *string `toml:"geosite_folder"` GeositeFolder *string `toml:"geosite_folder"`
EnablePeriodicallyReportState bool `toml:"enable_periodically_report_state"`
} }
func LoadVSConfFromBs(bs []byte) (vsConf VSConf, err error) { func LoadVSConfFromBs(bs []byte) (vsConf VSConf, err error) {
@@ -82,6 +84,7 @@ func GetAppConfByCurrentState() (ac AppConf) {
return return
} }
// 配置一些不需要machine的app级配置
func (ac *AppConf) Setup() { func (ac *AppConf) Setup() {
if ac == nil { if ac == nil {
return return
@@ -142,6 +145,9 @@ func (m *M) LoadConfigByTomlBytes(bs []byte) (err error) {
m.AppConf = *vsConf.AppConf m.AppConf = *vsConf.AppConf
m.AppConf.Setup() m.AppConf.Setup()
if m.AppConf.EnablePeriodicallyReportState {
m.enablePeriodicallyReportState = true
}
} }
if vsConf.ApiServerConf != nil { if vsConf.ApiServerConf != nil {
m.tomlApiServerConf = *vsConf.ApiServerConf m.tomlApiServerConf = *vsConf.ApiServerConf

View File

@@ -1,5 +1,7 @@
/* /*
Package machine 包装运行代理所需的方法,被设计为可轻易被外部程序或库调用, 而无需理解其内部细节 Package machine 包装运行代理所需的方法,被设计为可轻易被外部程序或库调用, 而无需理解其内部细节
一般而言,本包被命名为 engine 可能更恰当. 不过无所谓
*/ */
package machine package machine
@@ -47,7 +49,8 @@ type M struct {
callbacks callbacks
stateReportTicker *time.Ticker enablePeriodicallyReportState bool
stateReportTicker *time.Ticker
} }
func New() *M { func New() *M {
@@ -105,20 +108,23 @@ func (m *M) Start() {
dm.StartListen() dm.StartListen()
} }
if m.stateReportTicker == nil { if m.enablePeriodicallyReportState {
m.stateReportTicker = time.NewTicker(time.Minute * 5) //每隔五分钟输出一次目前状态 if m.stateReportTicker == nil {
m.stateReportTicker = time.NewTicker(time.Minute * 5) //每隔五分钟输出一次目前状态
var sw = utils.PrefixWriter{ var sw = utils.PrefixWriter{
Writer: os.Stdout, Writer: os.Stdout,
}
go func() {
for range m.stateReportTicker.C {
sw.Prefix = []byte(time.Now().Format("2006-01-02 15:04:05.999 "))
sw.Write([]byte("Current state:\n"))
m.PrintAllStateForHuman(os.Stdout, false)
} }
}() go func() {
for range m.stateReportTicker.C {
sw.Prefix = []byte(time.Now().Format("2006-01-02 15:04:05.999 "))
sw.Write([]byte("Current state:\n"))
m.PrintAllStateForHuman(os.Stdout, false)
}
}()
}
} }
m.Unlock() m.Unlock()
} }