Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
package gameServerMgr
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
. "Framework/managecenterModel"
|
||||
"goutil/webUtil"
|
||||
"goutil/zlibUtil"
|
||||
)
|
||||
|
||||
// 区服激活地址后缀
|
||||
const ActivateServer_URL_SUFFIX string = "/API/ServerActivate.ashx"
|
||||
|
||||
var (
|
||||
mManageCenterServerAPIUrl string
|
||||
mIsInit bool = true
|
||||
)
|
||||
|
||||
// 解析从ManagecenterServer中获取的服务器相关数据
|
||||
func ParseInfoFromManageCenterServer(serverGroupId int32, data string) {
|
||||
var deserializedData map[string]interface{}
|
||||
err := json.Unmarshal([]byte(data), &deserializedData)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
//解析服务器组
|
||||
var serverGroup *ServerGroup
|
||||
err = json.Unmarshal([]byte(deserializedData["ServerGroupInfo"].(string)), &serverGroup)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
//解析合作商
|
||||
var partnerList []*Partner
|
||||
err = json.Unmarshal([]byte(deserializedData["PartnerList"].(string)), &partnerList)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
//解析服务器列表
|
||||
var serverList []*Server
|
||||
err = json.Unmarshal([]byte(deserializedData["ServerList"].(string)), &serverList)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
//解析资源包
|
||||
var resourceList []*ResourceVersion
|
||||
err = json.Unmarshal([]byte(deserializedData["ResourceVersionList"].(string)), &resourceList)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
//解析大区
|
||||
var areaList []*Area
|
||||
err = json.Unmarshal([]byte(deserializedData["AreaList"].(string)), &areaList)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
//判断是否需要更新数据(如果ServerGroupId不匹配,则不解析数据)
|
||||
if serverGroupId != serverGroup.Id {
|
||||
return
|
||||
}
|
||||
|
||||
//缓存服务器组
|
||||
ParseServerGroupInfo(serverGroup)
|
||||
|
||||
//缓存合作商
|
||||
ParsePartnerInfo(partnerList)
|
||||
|
||||
//缓存合作商对应的充值配置
|
||||
ParseChargeConfigInfo(partnerList)
|
||||
|
||||
//缓存服务器
|
||||
ParseServerInfo(serverList)
|
||||
|
||||
//缓存资源包
|
||||
ParseResourceVersionInfo(resourceList)
|
||||
|
||||
//缓存大区
|
||||
ParseAreaInfo(areaList)
|
||||
}
|
||||
|
||||
// 激活服务器
|
||||
func ActiveServer(manageCenterServerAPIUrl string, serverGroupId int32) error {
|
||||
if len(manageCenterServerAPIUrl) == 0 {
|
||||
return fmt.Errorf("ManageCenterServerAPI地址不能为空")
|
||||
}
|
||||
mManageCenterServerAPIUrl = manageCenterServerAPIUrl
|
||||
|
||||
//定义参数
|
||||
requestParamMap := make(map[string]string, 0)
|
||||
requestParamMap["ServerGroupID"] = strconv.Itoa(int(serverGroupId))
|
||||
|
||||
//构造请求url
|
||||
url := fmt.Sprintf("%s/%s", mManageCenterServerAPIUrl, ActivateServer_URL_SUFFIX)
|
||||
|
||||
//请求url,请求头
|
||||
header := webUtil.GetFormHeader()
|
||||
transport := webUtil.NewTransport()
|
||||
transport.DisableKeepAlives = true
|
||||
transport.TLSClientConfig = &tls.Config{
|
||||
InsecureSkipVerify: true, //关闭证书校验
|
||||
}
|
||||
transport = webUtil.GetTimeoutTransport(transport, 30)
|
||||
|
||||
statusCode, returnBytes, err := webUtil.PostMapData(url, requestParamMap, header, transport)
|
||||
//statusCode, returnBytes, err := webUtil.PostMapData(url, requestParamMap, header, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if statusCode != 200 {
|
||||
return fmt.Errorf("StatusCode:%d", statusCode)
|
||||
}
|
||||
|
||||
//解压缩
|
||||
retBytes, err1 := zlibUtil.Decompress(returnBytes)
|
||||
if err1 != nil {
|
||||
return err1
|
||||
}
|
||||
// 解析返回值
|
||||
returnObj := new(ReturnObject)
|
||||
if err = json.Unmarshal(retBytes, &returnObj); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 判断返回状态是否为成功
|
||||
if returnObj.Code != 0 {
|
||||
return fmt.Errorf("code:%d,Message:%s", returnObj.Code, returnObj.Message)
|
||||
}
|
||||
|
||||
//解析得到的数据
|
||||
ParseInfoFromManageCenterServer(serverGroupId, returnObj.Data.(string))
|
||||
|
||||
//获取白名单
|
||||
GetWhiteListFromManageCenterServer()
|
||||
|
||||
//如果是初始化,则开启白名单刷新线程。避免游戏客户端刷新数据的时候重复开启线程
|
||||
if mIsInit {
|
||||
//启动白名单数据刷新线程
|
||||
StartRefreshWhiteListTread()
|
||||
|
||||
//启动刷新MC系统配置
|
||||
StartRefreshSysConfigTread()
|
||||
//初始化修改为fasle
|
||||
mIsInit = false
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user