56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package common
|
|
|
|
import (
|
|
"mongo.games.com/goserver/core/logger"
|
|
"mongo.games.com/goserver/core/module"
|
|
"mongo.games.com/goserver/core/mongo"
|
|
"mongo.games.com/goserver/core/netlib"
|
|
|
|
"mongo.games.com/game/protocol/server"
|
|
)
|
|
|
|
// GameSessState 服务状态
|
|
type GameSessState int
|
|
|
|
const (
|
|
GameSessStateOff GameSessState = iota //关闭状态
|
|
GameSessStateOn //开启状态
|
|
)
|
|
|
|
var SrvIsMaintaining = true
|
|
|
|
var ServerCtrlCallback func(msg *server.ServerCtrl)
|
|
|
|
func RegisterServerCtrlCallback(cb func(msg *server.ServerCtrl)) {
|
|
ServerCtrlCallback = cb
|
|
}
|
|
|
|
func init() {
|
|
netlib.Register(int(server.SSPacketID_PACKET_MS_SRVCTRL), &server.ServerCtrl{}, ServerCtrlHandler)
|
|
}
|
|
|
|
// ServerCtrlHandler 服务器控制,通用事件
|
|
func ServerCtrlHandler(s *netlib.Session, packetid int, data interface{}) error {
|
|
logger.Logger.Infof("ServerCtrlHandler %v", data)
|
|
msg, ok := data.(*server.ServerCtrl)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
switch msg.GetCtrlCode() {
|
|
case SrvCtrlCloseCode:
|
|
module.Stop()
|
|
|
|
case SrvCtrlResetMgoSession:
|
|
mongo.ResetAllSession()
|
|
|
|
default:
|
|
logger.Logger.Errorf("unknow server ctrl %v", msg)
|
|
}
|
|
|
|
// 服务自己处理的特殊事件
|
|
if ServerCtrlCallback != nil {
|
|
ServerCtrlCallback(msg)
|
|
}
|
|
return nil
|
|
}
|