diff --git a/config_manager.go b/config_manager.go index 82c812a..27dd4ce 100644 --- a/config_manager.go +++ b/config_manager.go @@ -5,48 +5,54 @@ import ( "gopkg.in/yaml.v2" "io/ioutil" "loafle.com/overflow/agent_api/config_manager" - "loafle.com/overflow/agent_api/observer" - "loafle.com/overflow/agent_api/observer/messages" "log" "os" "strings" "sync" + "loafle.com/overflow/agent_api/messages" ) type configManager struct { config_manager.ConfigManager // interface implements - - addCh chan interface{} - removeCh chan interface{} - configs map[string] *config_manager.Config globalConfig config_manager.GlobalConfig } var _configManager *configManager -func init() { +func Start(ch chan *config_manager.GlobalConfig, path string) error { + _configManager = GetInstance() + _configManager.loadGlobalConfig(path + "/" + "global.yaml") + ch <- _configManager.GetGlobalConfig() + return nil +} + +func StartSensorConfig(ch chan config_manager.ConfigManager, authKey string) error { + if err := _configManager.loadCrawlerConfigAll(); err != nil { + return err + } + ch <- _configManager + return nil +} + +func Stop(ch chan bool) { + GetInstance().stop() + ch <- true +} + +func GetInstance() *configManager { var once sync.Once once.Do(func() { - _configManager = NewConfigManager() + _configManager = &configManager{ + configs: make(map[string]*config_manager.Config, 0), + } }) - // regist handlers - agentStartHandler() - addSensorHandler() - removeSensorHandler() - agentEndHandler() + return _configManager } +func (c *configManager) stop() {} -func NewConfigManager() *configManager { - c := &configManager{ - configs: make(map[string]*config_manager.Config, 0), - addCh: make(chan interface{}, 0), - removeCh: make(chan interface{}, 0), - } - return c -} func (c *configManager) getConfigPath() string { return c.globalConfig.Paths.RootFolder + c.globalConfig.Paths.ConfigFolder diff --git a/init_method.go b/init_method.go index c199a67..fd008b1 100644 --- a/init_method.go +++ b/init_method.go @@ -1,48 +1,48 @@ package config_manager_go -import ( - "loafle.com/overflow/agent_api/observer" - "loafle.com/overflow/agent_api/observer/messages" -) - -func agentStartHandler() { - agentStart := make(chan interface{}, 0) - observer.Add(messages.AGT_STARTING, agentStart) - go func() { - data := <-agentStart - path := data.(string) - // load global config - _configManager.loadGlobalConfig(path + "/" + "global.yaml") - - // load all crawler configs - if err := _configManager.loadCrawlerConfigAll(); err != nil { - // error process - } - - observer.Remove(messages.AGT_STARTING, agentStart) - observer.Notify(messages.CFG_LOADED, _configManager) - }() -} - -func agentEndHandler() { - agentEnd := make(chan interface{}, 0) - observer.Add(messages.AGT_WILL_STOP, agentEnd) - go func() { - _ = <-agentEnd - observer.Remove(messages.AGT_WILL_STOP, agentEnd) - observer.Remove(messages.TASK_SENSOR_ADD,_configManager.addCh) - observer.Remove(messages.TASK_SENSOR_REMOVE,_configManager.removeCh) - }() -} - -func addSensorHandler() { - observer.Add(messages.TASK_SENSOR_ADD,_configManager.addCh) - go _configManager.addConfig() -} - -func removeSensorHandler() { - observer.Add(messages.TASK_SENSOR_REMOVE,_configManager.removeCh) - go _configManager.removeConfig() -} +//import ( +// "loafle.com/overflow/agent_api/observer" +// "loafle.com/overflow/agent_api/messages" +//) +// +//func agentStartHandler() { +// agentStart := make(chan interface{}, 0) +// observer.Add(messages.AGT_STARTING, agentStart) +// go func() { +// data := <-agentStart +// path := data.(string) +// // load global config +// _configManager.loadGlobalConfig(path + "/" + "global.yaml") +// +// // load all crawler configs +// if err := _configManager.loadCrawlerConfigAll(); err != nil { +// // error process +// } +// +// observer.Remove(messages.AGT_STARTING, agentStart) +// observer.Notify(messages.CFG_LOADED, _configManager) +// }() +//} +// +//func agentEndHandler() { +// agentEnd := make(chan interface{}, 0) +// observer.Add(messages.AGT_WILL_STOP, agentEnd) +// go func() { +// _ = <-agentEnd +// observer.Remove(messages.AGT_WILL_STOP, agentEnd) +// observer.Remove(messages.TASK_SENSOR_ADD,_configManager.addCh) +// observer.Remove(messages.TASK_SENSOR_REMOVE,_configManager.removeCh) +// }() +//} +// +//func addSensorHandler() { +// observer.Add(messages.TASK_SENSOR_ADD,_configManager.addCh) +// go _configManager.addConfig() +//} +// +//func removeSensorHandler() { +// observer.Add(messages.TASK_SENSOR_REMOVE,_configManager.removeCh) +// go _configManager.removeConfig() +//} diff --git a/test_agent/global.yaml b/test_agent/global.yaml index 8db049b..3c33324 100644 --- a/test_agent/global.yaml +++ b/test_agent/global.yaml @@ -3,7 +3,7 @@ central: port: 443 logPath: "./bin/log.xml" paths: - rootFolder : "/home/snoop/develop/path/go/src/loafle.com/overflow/config_manager_go/test_agent/" + rootFolder : "/home/insanity/Develop/gopath/src/loafle.com/overflow/config_manager_go/test_agent/" configFolder : "config/" binaryFolder : "container/" pidFolder : "pids/"