Beispiel #1
0
  @Override
  public void onChannelException(IChannel channel, Throwable t) {
    try {
      c_logger.error(
          StrUtil.join(channel, "(remoteAddr=", channel.remoteAddress(), ") got an error"), t);

      final ISessionListener<I, O> listener = m_listener;
      if (listener != null) listener.onSessionException(channel, t);
    } catch (Throwable e) {
      c_logger.error(
          StrUtil.join(channel, "(remoteAddr=", channel.remoteAddress(), ") Unexpected Error: "),
          e);
    } finally {
      channel.close();
    }
  }
Beispiel #2
0
  @Override
  public void onChannelClosed(IChannel channel) {
    c_logger.debug("{}(remoteAddr={}): CLOSED", channel, channel.remoteAddress());

    final ConcurrentHashMap<Long, IChannel> channels = m_channels;
    if (channels != null) channels.remove(channel.id());

    final ISessionListener<I, O> listener = m_listener;
    if (listener != null) {
      try {
        listener.onSessionClosed(channel);
      } catch (Throwable t) {
        c_logger.error(
            StrUtil.join(channel, "(remoteAddr=", channel.remoteAddress(), ") Unexpected Error: "),
            t);
      }
    }
  }
Beispiel #3
0
  @Override
  public void onChannelOpened(IChannel channel) {
    c_logger.debug("{}(remoteAddr={}): OPENED", channel, channel.remoteAddress());

    final Long id = channel.id();
    final ConcurrentHashMap<Long, IChannel> channels = m_channels;
    if (channels != null) channels.put(id, channel);

    if (m_stopped) {
      channel.close();
      return;
    }

    // failed to schedule, channel has been closed
    if (!scheduleIdleTimeout(channel)) return;

    final ISessionListener<I, O> listener = m_listener;
    if (listener != null) listener.onSessionOpened(channel);
  }