package util import ( "basic.com/dbapi.git" "basic.com/pubsub/protomsg.git" "basic.com/valib/gopherdiscovery.git" "flag" "github.com/gogo/protobuf/proto" "taskpubsub/logger" ) /************************* * 1. store all struct data * 2. define function for get difference data type * 3. recive data from sqlite process. and call conpos function. ***********************/ var camval dbapi.CameraApi var taskapi dbapi.TaskApi var sdkapi dbapi.SdkApi var IsInit bool var CameraIds []protomsg.Camera var CameraTasks []protomsg.CameraAndTaskInfo //var TaskSdks []protomsg.TaskSdkInfo var TaskSdks []protomsg.TaskSdkRun var Sdklist []string var Sdkinfos []protomsg.Sdk var urlServer = flag.String("urlServer", "tcp://127.0.0.1:40007", "heartbeat address of url server") var urlPubSub = flag.String("urlPubsub", "tcp://127.0.0.1:50007", "heartbeat pubsub address of url server") var dbip = flag.String("dbip", "127.0.0.1", "address of database ip") var dbport = flag.Int("dbport", 8001, "port of database port") var Sdkflag = make(chan bool) var TaskSdkflag = make(chan bool) var Cameraflag = make(chan bool) var newsdkmsg = &protomsg.DbChangeMessage{} func initDbData(initchan chan bool) { CameraIds = camval.FindAll() logger.Info("==============camera camera with task ================") CameraTasks = camval.FindAllCameraAndTask() logger.Info(CameraTasks) TaskSdks = taskapi.FindAllTaskSdkRun() Sdklist = sdkapi.GetAllSdkIds() Sdkinfos = sdkapi.FindAll("") initchan <- true } func updateDbData(opt []byte) { if err := proto.Unmarshal(opt, newsdkmsg); err != nil { logger.Error("publichshMessage ", err) return } switch newsdkmsg.Table { case protomsg.TableChanged_T_Camera: logger.Info("update camera") CameraIds = camval.FindAll() Cameraflag <- true logger.Info("update camera finish.") case protomsg.TableChanged_T_CameraTask: logger.Info("update cameratask") CameraTasks = camval.FindAllCameraAndTask() logger.Info("update cameratask finished!") case protomsg.TableChanged_T_TaskSdk: logger.Info("update tasksdk") TaskSdks = taskapi.FindAllTaskSdkRun() TaskSdkflag <- true case protomsg.TableChanged_T_Sdk: logger.Info("update sdk") Sdklist = sdkapi.GetAllSdkIds() Sdkinfos = sdkapi.FindAll("") Sdkflag <- true default: logger.Info("unknow type operation") } logger.Info(newsdkmsg) } func Init(initchan chan bool) { dbapi.Init(*dbip, *dbport) client, _ := gopherdiscovery.ClientWithSub(*urlServer, *urlPubSub, "ip:local") recvinit := client.HeartBeatMsg() _ = <-recvinit initDbData(initchan) peers, _ := client.Peers() for x := range peers { updateDbData(x) } }