Example #1
0
    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')
Example #2
0
 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')
Example #3
0
 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))
Example #4
0
 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')
Example #5
0
 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))
Example #6
0
 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')
Example #7
0
 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))
Example #8
0
 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))
Example #9
0
 def send_msg_to_client(connect_id, msg_str):
     game.SendMsgToClient(ModTopo.SERVICE_TYPE.FOR_CLIENT, connect_id, ModTopo.PROTO_TYPE.COMMON, msg_str)