package tasktag import ( "sync" "basic.com/pubsub/protomsg.git" "taskpubsub/logger" "taskpubsub/util" ) var TaskLabelMap sync.Map func Init() { logger.Info("============= init tasktag info =====================") genTaskLabelMap() go func(taskflag chan bool) { for _ = range taskflag { genTaskLabelMap() logger.Info("update task finished!") } }(util.TaskSdkflag) } // 从sqlite 接口拿到所有的任务, 每一个任务都有自己的几个算法 //以 taskid 作为key, 对应的算法组合作为 value func genTaskLabelMap() { var newtls []protomsg.TaskLabel for _, taskSdk := range util.TaskSdks { var tl protomsg.TaskLabel tl.Taskid = taskSdk.Task.Taskid tl.Taskname = taskSdk.Task.Taskname for _, sdkinfo := range taskSdk.Sdks { sdkinfowithtask := new(protomsg.SdkmsgWithTask) sdkinfowithtask.Ipcid = sdkinfo.IpcId sdkinfowithtask.Sdktype = sdkinfo.SdkType sdkinfowithtask.Sdkdata = make([]byte, 1) tl.Sdkinfos = append(tl.Sdkinfos, sdkinfowithtask) } tl.Index = int32(0) newtls = append(newtls, tl) } updateTaskLabelMap(newtls) TaskLabelMap.Range(func(k, v interface{}) bool { logger.Info(k, v) return true }) } func updateTaskLabelMap(taskLabel []protomsg.TaskLabel) { TaskLabelMap.Range(func(key interface{}, value interface{}) bool { TaskLabelMap.Delete(key) return true }) for _, value := range taskLabel { pv := value TaskLabelMap.Store(value.Taskid, &pv) } }