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)
def task(self): """ 任务 :param kwargs: :return: """ log.err(datetime.datetime.now()) log.err("current room count: %s." % RoomManager().count)
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)
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)
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)
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