Exemple #1
0
  /*
   * (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);
        }
      }
    }
  }
Exemple #2
0
  /*
   * (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;
  }
Exemple #3
0
 /*
  * (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;
 }