Exemplo n.º 1
0
    def task(self):
        """
        任务
        :param kwargs:
        :return:
        """
        log.msg(datetime.datetime.now())
        log.msg('do task. %s' % self.kwargs['name'])
        try:
            n = time.time()
            for conn in GlobalObject(
            ).netfactory.connmanager._connections.values():
                log.msg("uid: %s. ctime:%s. room_id: %s." %
                        (getattr(conn.instance, 'uid',
                                 None), getattr(conn.instance, "ctime", None),
                         getattr(conn.instance, 'room_id', None)))

                if (getattr(conn.instance,'uid',None) is None or getattr(conn.instance,'room_id', None) is None) and\
                    getattr(conn.instance, "ctime", None) is not None:
                    if (n - conn.instance.ctime) > 30:
                        GlobalObject().netfactory.loseConnection(conn.id)
                        log.msg("%s dead conn %s delete" %
                                (GlobalObject().json_config['name'], conn.id))
        except BaseException, e:
            log.err("=======================fight dead conn error")
            log.err("%s" % e)
Exemplo n.º 2
0
 def task(self):
     """
     任务
     :param kwargs:
     :return:
     """
     log.err(datetime.datetime.now())
     log.err("current room count: %s." % RoomManager().count)
Exemplo n.º 3
0
 def dropPlayer(self, player):
     """处理用户下线
     """
     userId = player.pid
     try:
         #保存数据
         player.saveDataToDb()
         del self._players[userId]
         log.msg("removed player %s from PlayerManager" % userId)
     except Exception, e:
         log.err(e)
Exemplo n.º 4
0
def allocGameNode(data):
    """
    用户登陆成功后分配一个game node服务节点
    :param userId:
    :return:
    """
    #用户ID做key
    try:
        gamenode = GameNodeRouter().get_node(data['pid'])
        if gamenode:
            log.msg("allocGameNode successful. node: %s" % gamenode.getName())
            gamenode.callbackChildNotForResult("gameMsgRouter", data)
        else:
            log.err("can't find gamenode. data: %s" % data)
    except GameNodeRouterException:
        log.err("GameNodeRouterException no gamenode to use. data: %s" % data)
Exemplo n.º 5
0
def forwarding(data):
    """
    转发数据到对应节点
    :param data:
    :return:
    """
    #用户ID做key
    try:
        gamenode = GameNodeRouter().get_node(data['pid'])
        if gamenode:
            log.msg("forwarding data. node: %s" % gamenode.getName())
            gamenode.callbackChildNotForResult("gameMsgRouter", data)
        else:
            log.err("can't find gamenode. data: %s" % data)
    except GameNodeRouterException:
        log.err("GameNodeRouterException no gamenode to use. data: %s" % data)
Exemplo n.º 6
0
 def joinRandomRoom(self, conn, cc):
     """
     加入随机房间
     :param conn:
     :return:
     """
     try:
         self.managerLock.acquire()
         can_rooms = [r for r in self.rooms.values() if not r.full]
         if can_rooms:
             room = can_rooms[0]
             room.joinRoom(conn)
         else:
             #create
             room = Room(self.roomGen.next(), cc)
             room.joinRoom(conn)
             self.rooms[room.roomId] = room
         return room.roomId
     except Exception, e:
         log.err(e)
         return None