def _send_msg_to_client_node(self, msg_str, client_node_type, client_node_id=None): if client_node_type in self.connect_client_dict: if client_node_type == ModTopo.NODE_TYPE.SCENE: proto_type = ModTopo.PROTO_TYPE.SCENE elif client_node_type == ModTopo.NODE_TYPE.TEAM: proto_type = ModTopo.PROTO_TYPE.TEAM else: logger.GetLog().error( '_send_msg_to_client_node input an unexpected node type : %s' % client_node_type) return if client_node_id: if client_node_id in self.connect_client_dict[ client_node_type]: game.SendMsgToClient( ModTopo.SERVICE_TYPE.FOR_NODE, self.connect_client_dict[client_node_type] [client_node_id], proto_type, msg_str) else: logger.GetLog().warn('client node %s %s not connected' % (client_node_type, client_node_id)) else: for client_node_conn_id in self.connect_client_dict[ client_node_type].values(): game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, client_node_conn_id, proto_type, msg_str) else: logger.GetLog().warn('no scene node in connect_client_dict')
def _send_msg_to_fight(self, msg_str, fight_node_id=None): if ModTopo.NODE_TYPE.FIGHT in self.connect_client_dict: if fight_node_id: if fight_node_id in self.connect_client_dict[ModTopo.NODE_TYPE.FIGHT]: game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, self.connect_client_dict[ModTopo.NODE_TYPE.FIGHT][fight_node_id], ModTopo.PROTO_TYPE.FIGHT, msg_str) else: logger.GetLog().warn('fight node %s not connected' % fight_node_id) else: for fight_node_conn_id in self.connect_client_dict[ModTopo.NODE_TYPE.FIGHT].values(): game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, fight_node_conn_id, ModTopo.PROTO_TYPE.FIGHT, msg_str) else: logger.GetLog().warn('no fight node in connect_client_dict')
def send_msg_to_client_node(self, client_node_type, msg_str, *args): if client_node_type != ModTopo.NODE_TYPE.CLIENT: if args and args[0] > 0: # 有指定的connect id connect_id = args[0] game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, connect_id, ModTopo.PROTO_TYPE.COMMON, msg_str) else: # 没有指定的connect id,广播给所有该类型节点 if client_node_type in self.node_type_connect_dict: for connect_id in self.node_type_connect_dict[client_node_type]: game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, connect_id, ModTopo.PROTO_TYPE.COMMON, msg_str) else: logger.GetLog().warn('will send msg to node {0}, but node not found'.format(client_node_type))
def _send_msg_to_team_proxy(self, msg): conn_id_list = self.get_client_node_connect_id_list( ModTopo.NODE_TYPE.TEAM_PROXY) if conn_id_list: game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, conn_id_list[0], ModTopo.PROTO_TYPE.TEAM, msg) else: logger.GetLog().warn('_send_msg_to_team_proxy but no connect')
def send_msg_to_client(self, connect_id, proto_type, msg): if self.get_connect_ip(ModTopo.SERVICE_TYPE.FOR_CLIENT, connect_id): game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_CLIENT, connect_id, proto_type, msg) else: logger.GetLog().warn( 'send_msg_to_client but not connected : %s, %s' % (connect_id, proto_type))
def _send_msg_to_chat(self, msg_str, chat_node_id=None): if ModTopo.NODE_TYPE.CHAT in self.connect_client_dict: if chat_node_id: if chat_node_id in self.connect_client_dict[ ModTopo.NODE_TYPE.CHAT]: game.SendMsgToClient( ModTopo.SERVICE_TYPE.FOR_NODE, self.connect_client_dict[ModTopo.NODE_TYPE.CHAT] [chat_node_id], ModTopo.PROTO_TYPE.CHAT, msg_str) else: logger.GetLog().warn('chat node %s not connected' % chat_node_id) else: for chat_node_conn_id in self.connect_client_dict[ ModTopo.NODE_TYPE.CHAT].values(): game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, chat_node_conn_id, ModTopo.PROTO_TYPE.CHAT, msg_str) else: logger.GetLog().warn('no chat node in connect_client_dict')
def send_msg_to_client_node(self, client_node_type, msg_str, *args): # db的客户端节点: 所有逻辑节点, 可能有 if client_node_type in (ModTopo.NODE_TYPE.CHAT, ModTopo.NODE_TYPE.TEAM, ModTopo.NODE_TYPE.FIGHT, ModTopo.NODE_TYPE.SCENE) and args: if client_node_type == ModTopo.NODE_TYPE.CHAT: proto_type = ModTopo.PROTO_TYPE.CHAT elif client_node_type == ModTopo.NODE_TYPE.TEAM: proto_type = ModTopo.PROTO_TYPE.TEAM elif client_node_type == ModTopo.NODE_TYPE.FIGHT: proto_type = ModTopo.PROTO_TYPE.FIGHT elif client_node_type == ModTopo.NODE_TYPE.SCENE: proto_type = ModTopo.PROTO_TYPE.SCENE else: proto_type = ModTopo.PROTO_TYPE.COMMON game.SendMsgToClient( ModTopo.SERVICE_TYPE.FOR_NODE, self.connect_client_dict[client_node_type][args[0]], proto_type, msg_str) else: logger.GetLog().error( 'send msg to an unexpected client node or none args: %s, %s, %s' % (client_node_type, msg_str, args))
def OnQueryResult(self, conn_id, proto_type, mt, ma): """ 查询发送回去 """ client_node_type = -1 if proto_type == ModTopo.PROTO_TYPE.CHAT: client_node_type = ModTopo.NODE_TYPE.CHAT elif proto_type == ModTopo.PROTO_TYPE.TEAM: client_node_type = ModTopo.NODE_TYPE.TEAM elif proto_type == ModTopo.PROTO_TYPE.FIGHT: client_node_type = ModTopo.NODE_TYPE.FIGHT elif proto_type == ModTopo.PROTO_TYPE.SCENE: client_node_type = ModTopo.NODE_TYPE.SCENE if client_node_type != -1: result_rpc = self.get_server_rpc_handler( ModTopo.NODE_TYPE.DB_PROXY, conn_id) result_rpc.mt = "On%s" % mt result_rpc.ma = (ma, ) game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_NODE, conn_id, proto_type, cPickle.dumps(result_rpc)) else: logger.GetLog().error( 'OnQueryResult unsupported proto type : %s, %s, %s' % (conn_id, proto_type, mt))
def send_msg_to_client(connect_id, msg_str): game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_CLIENT, connect_id, ModTopo.PROTO_TYPE.COMMON, msg_str)