def requestServerInfo(self): if self.isGateRouteConnect(): GateRouteServerConnInfoReq = helper.createProto(900001) self.send( msgUtils.packMonitorMsg(900001, GateRouteServerConnInfoReq)) else: GetGameServerInfoReq = helper.createProto(900013) self.send(msgUtils.packMonitorMsg(900013, GetGameServerInfoReq))
def onConnect(self): if self.type == helper.C_GATE: RegisterDebugA2G_R = helper.createProto(500003) RegisterDebugA2G_R.id = config.SERVER_ID RegisterDebugA2G_R.type = 5 self.send2Gate(500003, RegisterDebugA2G_R, self.onRegister) elif self.type == helper.C_ROUTE: RegisterDebugA2R_R = helper.createProto(503003) RegisterDebugA2R_R.id = config.SERVER_ID RegisterDebugA2R_R.type = 5 self.send2Route(0, 0, 0, 1, 0, 503003, RegisterDebugA2R_R, self.onRegister) logging.info("成功连接{0},开始请求注册{0}".format(self.info()))
def notifyNewServer(self, conn): for connect in self.connects.values(): if connect != conn: RegisterServerReq = helper.createProto(900003) conn.setServerInfoProto(RegisterServerReq) connect.send(msgUtils.packMonitorMsg(900003, RegisterServerReq))
def onGetMonitorServerInfo(self, data): GetMonitorServerInfoRes = helper.createProto(900016) GetMonitorServerInfoRes.connectedServerNum = self.server.getConnectedServerNum( ) GetMonitorServerInfoRes.registeredServerNum = self.server.getRegistedServerNum( ) GetMonitorServerInfoRes.monitorVersion = monitorVersion.version for connect in self.server.getAllGateRouteConnects(): gateRouteInfo = GetMonitorServerInfoRes.gateRouteServerInfo.add() connect.setServerInfoProto(gateRouteInfo.serverInfo) gateRouteInfo.connInfos.playerLinkCount = connect.connectedServersInfo.playerLinkCount gateRouteInfo.connInfos.playerCount = connect.connectedServersInfo.playerCount gateRouteInfo.connInfos.serverLinkCount = connect.connectedServersInfo.serverLinkCount gateRouteInfo.connInfos.serverCount = connect.connectedServersInfo.serverCount for serverInfo in connect.connectedServersInfo.serverInfo: connInfo = gateRouteInfo.connInfos.serverInfo.add() connInfo.id = serverInfo.id connInfo.state = serverInfo.state connInfo.type = serverInfo.type connInfo.subType = serverInfo.subType connInfo.url = serverInfo.url connInfo.siteId = serverInfo.siteId for connect in self.server.getAllNormalConnects(): normalServerInfo = GetMonitorServerInfoRes.normalServerInfo.add() connect.setServerInfoProto(normalServerInfo.serverInfo) normalServerInfo.gameServerstate = connect.gameServerstate normalServerInfo.dataBaseState = connect.dataBaseState self.send(msgUtils.packMonitorMsg(900016, GetMonitorServerInfoRes))
def unpackMonitorMsg(data): msg = MsgData() msg.code = int.from_bytes(data[0:4], byteorder='big') msg.len = int.from_bytes(data[4:8], byteorder='big') msg.data = helper.createProto(msg.code) msg.data.ParseFromString(data[8:]) return msg
def sendGetLogInfoMsg(self, serverId, serverType, subType, siteId): GetServerErrorLogReq = helper.createProto(900018) GetServerErrorLogReq.serverId = serverId GetServerErrorLogReq.serverType = serverType GetServerErrorLogReq.subType = subType GetServerErrorLogReq.siteId = siteId self.send(msgUtils.packMonitorMsg(900018, GetServerErrorLogReq))
def notifyServerList(self, conn): RegiterServerNotify = helper.createProto(900004) for connect in self.connects.values(): if connect.registed: infoProto = RegiterServerNotify.serverInfo.add() connect.setServerInfoProto(infoProto) RegiterServerNotify.id = conn.id conn.send(msgUtils.packMonitorMsg(900004, RegiterServerNotify))
def sendServerInfo(self): logging.debug("发送获取{}服务器消息".format(self.info())) GateRouteServerConnInfoReq = helper.createProto(900001) if self.type == helper.C_ROUTE: self.send2RouteSelf(900001, GateRouteServerConnInfoReq, self.onGetServerInfo) else: self.send2Gate(900001, GateRouteServerConnInfoReq, self.onGetServerInfo)
def unpackGateMsg(data): msg = MsgData() msg.siteId = int.from_bytes(data[0:4], byteorder='big') msg.seq = int.from_bytes(data[4:8], byteorder='big') msg.code = int.from_bytes(data[8:12], byteorder='big') msg.len = int.from_bytes(data[12:16], byteorder='big') msg.data = helper.createProto(msg.code) msg.data.ParseFromString(data[16:]) msg.sendType = 1 return msg
def unpackGateServerMsg(data): msg = MsgData() msg.siteId = int.from_bytes(data[0:4], byteorder='big') msg.userId = int.from_bytes(data[4:8], byteorder='big') msg.broadcast = data[8] msg.code = int.from_bytes(data[12:16], byteorder='big') msg.len = int.from_bytes(data[16:20], byteorder='big') msg.data = helper.createProto(msg.code) msg.data.ParseFromString(data[20:]) return msg
def sendServerList(self): GetServerListC2A_S = helper.createProto(504002) servers = mysql.getResult() for server in servers: info = GetServerListC2A_S.info.add() info.id = server[0] info.ip = server[1] info.port = server[2] info.type = server[3] info.subType = server[4] self.send2Route(0, 0, 2, 0, 0, 504002, GetServerListC2A_S)
def unpackRouteMsg(data): msg = MsgData() msg.siteId = int.from_bytes(data[0:4], byteorder='big') msg.userId = int.from_bytes(data[4:8], byteorder='big') msg.serverId = int.from_bytes(data[8:10], byteorder='big') msg.sendType = data[10] msg.targetType = data[11] msg.subTargetType = data[12] msg.extra = data[13] msg.reserved = int.from_bytes(data[14:16], byteorder='big') msg.seq = int.from_bytes(data[16:20], byteorder='big') msg.no = int.from_bytes(data[20:24], byteorder='big') msg.len = int.from_bytes(data[24:28], byteorder='big') msg.data = helper.createProto(msg.no) msg.data.ParseFromString(data[28:]) return msg
def onGetServerLog(self, data): print('onGetServerLog') GetServerErrorLogRes = helper.createProto(900019) connectList = [] if (data.serverId != 0): coonect = self.server.getConnectByServerId(data.serverId) connectList.append(coonect) elif data.serverType == -1: connectList = self.server.getConnectsByServerType( data.serverType, data.subType, data.siteId) else: connectList = self.server.getConnectsByServerType( data.serverType, data.subType, data.siteId) for connect in connectList: for log in connect.logs: GetServerErrorLogRes.logs.append(log) self.send(msgUtils.packMonitorMsg(900019, GetServerErrorLogRes))
def sendGetMonitorInfoMsg(self): GetMonitorServerInfoReq = helper.createProto(900015) self.send(msgUtils.packMonitorMsg(900015, GetMonitorServerInfoReq))
def onRegisterDebugA2G_R(self, data): RegisterG2A_S = helper.createProto(500002) self.send(msgUtils.packGateServerMsg(data.siteId, data.userId, 500002, RegisterG2A_S))
def onRegisterA2R_R(self, data): RegisterR2A_S = helper.createProto(503002) self.send(msgUtils.packRouteMsg(0, 0, 0, 4, 0, data.seq, 503002, RegisterR2A_S))
def onRegisterMonitor(self): GateRouteServerConnInfoReq = helper.createProto(900001) self.send(msgUtils.packMonitorMsg(900001, GateRouteServerConnInfoReq))