40 lines
965 B
Go
40 lines
965 B
Go
|
|
package reloadMgr
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"fmt"
|
|||
|
|
|
|||
|
|
"goutil/logUtil"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var (
|
|||
|
|
reloadFuncMap = make(map[string]func() error)
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// RegisterReloadFunc ...注册Reload方法
|
|||
|
|
// funcName:方法名称
|
|||
|
|
// reloadFunc:reload方法
|
|||
|
|
func RegisterReloadFunc(funcName string, reloadFunc func() error) {
|
|||
|
|
if _, exists := reloadFuncMap[funcName]; exists {
|
|||
|
|
panic(fmt.Sprintf("%s已经存在,请重新取名", funcName))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
reloadFuncMap[funcName] = reloadFunc
|
|||
|
|
logUtil.InfoLog(fmt.Sprintf("RegisterReloadFunc funcName:%s,当前共有%d个注册", funcName, len(reloadFuncMap)))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Reload ...重新加载
|
|||
|
|
// 返回值:
|
|||
|
|
// 错误列表
|
|||
|
|
func Reload() (errList []error) {
|
|||
|
|
for funcName, reloadFunc := range reloadFuncMap {
|
|||
|
|
if err := reloadFunc(); err == nil {
|
|||
|
|
logUtil.InfoLog(fmt.Sprintf("Call ReloadFunc:%s Success.", funcName))
|
|||
|
|
} else {
|
|||
|
|
logUtil.ErrorLog(fmt.Sprintf("Call ReloadFunc:%s Fail, Error:%s", funcName, err))
|
|||
|
|
errList = append(errList, err)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return
|
|||
|
|
}
|