@Override protected void add0(ChannelIoSession<? extends ChannelConfig> session) { addNow(session); }
@Override protected void flush0(ChannelIoSession<? extends ChannelConfig> session) { flushNow(session); }
@Override protected void remove0(ChannelIoSession<? extends ChannelConfig> session) { removeNow(session); }
private boolean removeNow(ChannelIoSession<? extends ChannelConfig> session) { clearWriteRequestQueue(session); try { destroy(session); return true; } catch (Exception e) { IoFilterChain filterChain = session.getFilterChain(); filterChain.fireExceptionCaught(e); } finally { clearWriteRequestQueue(session); session.getService().getListeners() .fireSessionDestroyed(session); } return false; }
private void addNow(ChannelIoSession<? extends ChannelConfig> session) { try { init(session); // Build the filter chain of this session. IoFilterChainBuilder chainBuilder = session.getService().getFilterChainBuilder(); chainBuilder.buildFilterChain(session.getFilterChain()); // DefaultIoFilterChain.CONNECT_FUTURE is cleared inside here // in AbstractIoFilterChain.fireSessionOpened(). // Propagate the SESSION_CREATED event up to the chain IoServiceListenerSupport listeners = session.getService().getListeners(); listeners.fireSessionCreated(session); } catch (Throwable e) { ExceptionMonitor.getInstance().exceptionCaught(e, session); try { destroy(session); } catch (Exception e1) { ExceptionMonitor.getInstance().exceptionCaught(e1, session); } } }
private final IoAcceptorChannelHandler parentHandler; private final ChannelGroup channelGroup; private final IoProcessorEx<ChannelIoSession<? extends ChannelConfig>> processor = new ChannelIoProcessor(); private final List<IoSessionIdleTracker> sessionIdleTrackers = Collections.synchronizedList(new ArrayList<>());
private boolean flushNow(ChannelIoSession<? extends ChannelConfig> session) { if (!session.isConnected()) { removeNow(session); return false;