示例#1
0
文件: services.py 项目: uhoohei/texas
    def on_login(self, p, data):
        [_, cmd, ver1, ver2, game_id, channel_id, session_key] = data
        if not game_id or not session_key:
            return self.request_fail(cmd, ERR_DATA_BROKEN)
        if ver1 != VERSION_MAIN:
            return self.request_fail(cmd, ERR_VERSION_ERR)
        if game_id != CONFIG.game_id:
            return self.request_fail(cmd, ERR_SYSTEM_ERR)

        info = online_model.get_by_key(session_key)
        if not info or not info.session_key:
            return self.request_fail(cmd, ERR_DATA_BROKEN)

        ugame = user_model.get(info.uid)
        if not ugame:
            return self.request_fail(cmd, ERR_SYSTEM_ERR)

        from gateway import Gateway
        gw = Gateway.share()
        old_player = gw.get_player(info.uid)
        if old_player:  # 玩家已在线,直接将旧的socket清掉,并更新游戏数据,注意此时不返回任何数据,直接通过socket发送
            p.stop()
            old_player.send([SERVICE_LOGIN, CMD_LOGIN, ERR_RE_LOGIN])
            old_player.close()
            old_player.stop()
            old_player.set_socket(p.sock, p.address)
            old_player.start()
            old_player.set_ugame(ugame)
            old_player.send(self.request_ok(cmd, self.make_user_structure(old_player)))
        else:
            p.set_ugame(ugame)
            gw.save_player(p)
            return self.request_ok(cmd, self.make_user_structure(p))
示例#2
0
文件: main.py 项目: uhoohei/texas
def main():
    utils.log('started with pid %d' % (os.getpid()), log_file)
    model_base.keep_redis_connect()

    gw = Gateway.share()
    gw.set_ports(CONFIG.ports)  # 设置端口
    gw.set_game_id(CONFIG.game_id)  # 服务类型
    gw.insert_service(ServiceGame.share())  # 插入游戏服务
    gw.insert_service(ServiceLogin.share())  # 插入登陆相关的服务
    gw.insert_service(ServiceSystem.share())  # 插入系统相关的服务
    gw.insert_service(ServiceControl.share())  # 插入控制服务
    gw.start_service()  # 启动服务
示例#3
0
 def before_session_end(self, *args):
     from gateway import Gateway
     gw = Gateway.share()
     gw.on_connection_end(self)
示例#4
0
 def on_line_received(self, message):
     print 'line received: ', message
     from gateway import Gateway
     gw = Gateway.share()
     gw.on_line_received(self, message)