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 }