/* * (non-Javadoc) * * @see * com.absir.server.socket.resolver.SocketAuthorResolver#unRegister(java * .io.Serializable, java.nio.channels.SocketChannel, * com.absir.server.socket.JbServerContext) */ @Override public void unRegister(Serializable id, SocketChannel socketChannel, ServerContext serverContext) throws Throwable { if (id instanceof Long) { JbPlayerContext playerContext = ContextUtils.getContext(JbPlayerContext.COMPONENT.PLAYER_CONTEXT_CLASS, (Long) id); IFight fight = playerContext.getFight(); if (fight != null) { fight.disconnect(); } synchronized (playerContext) { if (playerContext.getSocketChannel() == socketChannel) { playerContext.setSocketChannel(null); } } } }
/* * (non-Javadoc) * * @see * com.absir.server.socket.resolver.SocketSessionResolver#register(java. * nio.channels.SocketChannel, com.absir.server.socket.ServerContext, * byte[], com.absir.server.socket.SocketBuffer) */ @Override public ServerContext register( SocketChannel socketChannel, ServerContext serverContext, byte[] buffer, SocketBuffer socketBuffer) throws Throwable { JiUserBase userBase = IdentityServiceLocal.getUserBase(new String(buffer)); Long id = PlayerServiceBase.ME.getPlayerId(serverContext.getServer().getId(), userBase); if (id != null) { JbPlayerContext playerContext = ContextUtils.getContext(JbPlayerContext.COMPONENT.PLAYER_CONTEXT_CLASS, id); JbPlayer player = playerContext.getPlayer(); if (player.getCard() == 0) { return null; } long serverId = player.getServerId(); if (!serverContext.getServer().getId().equals(serverId)) { if (serverContext.getServer().isMultiPort()) { serverContext = SocketServerContext.ME.getServerContext(serverId); if (serverContext == null) { return null; } } else { return null; } } synchronized (playerContext) { if (playerContext.getSocketChannel() != null) { SocketServer.close(playerContext.getSocketChannel()); } playerContext.setSocketChannel(socketChannel); } } socketBuffer.setId(id); return serverContext; }
/* * (non-Javadoc) * * @see * com.absir.server.socket.resolver.SocketAuthorResolver#doBeat(java.io. * Serializable, java.nio.channels.SocketChannel, * com.absir.server.socket.ServerContext) */ @Override public boolean doBeat(Serializable id, SocketChannel socketChannel, ServerContext serverContext) { ContextUtils.getContext(JbPlayerContext.COMPONENT.PLAYER_CONTEXT_CLASS, (Long) id); return true; }