Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
package managecenterMgr
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"Framework/goroutineMgr"
|
||||
"Framework/initMgr"
|
||||
"Framework/managecenterModel"
|
||||
"goutil/logUtil"
|
||||
)
|
||||
|
||||
var (
|
||||
mcAPIUrl string
|
||||
mcDataSwitchObj *ManageCenterDataSwitch
|
||||
initSuccessObj = initMgr.NewInitSuccess("managecenterMgr")
|
||||
|
||||
//数据变更通知回调
|
||||
mDataChangeCallBackFunc func(managecenterModel.MCDataType) error
|
||||
)
|
||||
|
||||
// 注册初始化成功的通道
|
||||
// name:模块名称
|
||||
// ch:通道对象
|
||||
func RegisterInitSuccess(name string, ch chan bool) {
|
||||
initSuccessObj.Register(name, ch)
|
||||
}
|
||||
|
||||
// 注册MC数据变更通知回调函数
|
||||
// handler:回调方法
|
||||
func RegisterDataChangeCallBackFunc(handler func(managecenterModel.MCDataType) error) {
|
||||
mDataChangeCallBackFunc = handler
|
||||
}
|
||||
|
||||
// Start ...启动ManageCenter管理器
|
||||
// manageCenterAPIUrl:ManageCenter对外提供的API
|
||||
// manageCenterDataSwitchObj:ManageCenter数据获取开关对象
|
||||
func Start(manageCenterAPIUrl string, manageCenterDataSwitchObj *ManageCenterDataSwitch) {
|
||||
mcAPIUrl = manageCenterAPIUrl
|
||||
mcDataSwitchObj = manageCenterDataSwitchObj
|
||||
|
||||
// 先初始化一次数据
|
||||
if err := reload(true); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// 通知初始化成功
|
||||
initSuccessObj.Notify()
|
||||
|
||||
// 定时刷新数据
|
||||
go func() {
|
||||
goroutineName := "managecenterMgr.timelyRefresh"
|
||||
goroutineMgr.Monitor(goroutineName)
|
||||
defer goroutineMgr.ReleaseMonitor(goroutineName)
|
||||
|
||||
for {
|
||||
// 每5秒刷新一次
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
// 刷新服务器组
|
||||
reload(false)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// 重新加载/初始化
|
||||
func reload(isInit bool) error {
|
||||
var err error
|
||||
|
||||
// 加载合作商数据
|
||||
if mcDataSwitchObj.AllDataSwitch || mcDataSwitchObj.PartnerDataSwitch {
|
||||
if err = reloadPartner(isInit); err != nil && isInit {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 加载服务器数据
|
||||
if mcDataSwitchObj.AllDataSwitch || mcDataSwitchObj.ServerDataSwitch {
|
||||
if err = reloadServer(isInit); err != nil && isInit {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 加载服务器组数据
|
||||
if mcDataSwitchObj.AllDataSwitch || mcDataSwitchObj.ServerGroupDataSwitch {
|
||||
if err = reloadServerGroup(isInit); err != nil && isInit {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 加载资源数据
|
||||
if mcDataSwitchObj.AllDataSwitch || mcDataSwitchObj.ResourceVersionDataSwitch {
|
||||
if err = reloadResourceVersion(isInit); err != nil && isInit {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 加载玩家白名单数据
|
||||
if mcDataSwitchObj.AllDataSwitch || mcDataSwitchObj.WhiteListDataSwitch {
|
||||
if err = reloadWhiteList(isInit); err != nil && isInit {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 加载大区数据
|
||||
if mcDataSwitchObj.AllDataSwitch || mcDataSwitchObj.AreaDataSwitch {
|
||||
if err = reloadArea(isInit); err != nil && isInit {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取可访问的ManageCenter地址
|
||||
// suffix:Url后缀
|
||||
// 返回值:
|
||||
// 可访问的ManageCenter地址
|
||||
func getManageCenterUrl(suffix string) string {
|
||||
return fmt.Sprintf("%s/%s", strings.TrimRight(mcAPIUrl, "/"), strings.TrimLeft(suffix, "/"))
|
||||
}
|
||||
|
||||
// 回调
|
||||
// dataType:数据类型
|
||||
// isInit:是否初始化
|
||||
func mcDataChangeCallBack(dataType managecenterModel.MCDataType, isInit bool) {
|
||||
//如果没注册回调函数,或者是数据初始化,则不回调
|
||||
if mDataChangeCallBackFunc == nil || isInit {
|
||||
return
|
||||
}
|
||||
|
||||
//回调
|
||||
err := mDataChangeCallBackFunc(dataType)
|
||||
|
||||
logUtil.ErrorLog(fmt.Sprintf("通知回调出错,DataType:%d,错误信息为:%s", dataType, err))
|
||||
}
|
||||
Reference in New Issue
Block a user