package convertMgr import ( "fmt" "sync" "time" . "Framework/startMgr" "goutil/logUtil" ) var ( funcMap = make(map[string]*FuncItem) mutex sync.Mutex operateName = "Convert" ) // 注册方法(如果名称重复会panic) // name:方法名称(唯一标识) // moduleType:模块类型 // definition:方法定义 func Register(name string, moduleType ModuleType, definition func() error) { mutex.Lock() defer mutex.Unlock() if _, exists := funcMap[name]; exists { panic(fmt.Sprintf("%s已经存在,请重新命名", name)) } funcMap[name] = NewFuncItem(name, moduleType, definition) } // 调用所有方法 // 返回值: // 错误列表 func CallAll() (errList []error) { mutex.Lock() defer mutex.Unlock() for _, item := range funcMap { // 调用方法 if err := item.Call2(operateName); err != nil { errList = append(errList, err) } } return } // 按照模块类型进行调用 // moduleType:模块类型 // 返回值: // errList:错误列表 func CallType(moduleType ModuleType) (errList []error) { mutex.Lock() defer mutex.Unlock() startTime := time.Now() defer func() { logUtil.InfoLog("%v %s 执行总时间:%s", moduleType, operateName, time.Since(startTime)) }() for _, item := range funcMap { if item.ModuleType != moduleType { continue } // 调用方法 if err := item.Call2(operateName); err != nil { errList = append(errList, err) } } return }