package tasktag import ( "sync" "basic.com/pubsub/protomsg.git" "github.com/long/test/util" "github.com/long/test/logger" ) var TaskMapLab sync.Map func Init() { logger.Info("============= init tasktag info =====================") GenTaskMap() go func(taskflag chan bool) { for _ = range taskflag { GenTaskMap() logger.Info("update task finished!") } }(util.TaskSdkflag) } func GenTaskMap() { var tls []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) tls = append(tls, tl) } GenTasklab(tls) TaskMapLab.Range(func(k, v interface{}) bool { logger.Info(k, v) return true }) } // 从sqlite 接口拿到所有的任务, 每一个任务都有自己的几个算法 //以 taskid 作为key, 对应的算法组合作为 value func GenTasklab(tasklab []protomsg.TaskLabel) { TaskMapLab.Range(func(key interface{}, value interface{}) bool { TaskMapLab.Delete(key) return true }) for _, value := range tasklab { pv := value TaskMapLab.Store(value.Taskid, &pv) } }