@Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { if (!alreadyFiredIoExceptionCaught) { // filter chain can change if session is re-aligned IoFilterChain filterChain = session.getFilterChain(); filterChain.fireExceptionCaught(e.getCause()); Throwable cause = e.getCause(); if (cause instanceof IOException) { alreadyFiredIoExceptionCaught = true; } } }
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { Object message = e.getMessage(); if (message instanceof ChannelBuffer) { ChannelBuffer buf = (ChannelBuffer) message; // note: read as unshared buffer // can convert via IoBufferEx.asSharedBuffer() if necessary later message = allocator.wrap(buf.toByteBuffer()); buf.skipBytes(buf.readableBytes()); } // filter chain can change if session is re-aligned IoFilterChain filterChain = session.getFilterChain(); filterChain.fireMessageReceived(message); }
failedRequests.add(req); } else { IoFilterChain filterChain = session.getFilterChain(); filterChain.fireMessageSent(req); IoFilterChain filterChain = session.getFilterChain(); filterChain.fireExceptionCaught(cause);
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); } } }
final IoFilterChain filterChain = session.getFilterChain(); WriteRequest req = null;