private void addLoggerFilter(T session, Logger logger) { if (logger != null) { // setup logging filters for the new session LoggingFilter.addIfNeeded(logger, session, getTransportMetadata().getName()); if (session.getParent() != null) { LoggingFilter.moveAfterCodec(session.getParent()); } } }
@SuppressWarnings("deprecation") @Override public void addBridgeFilters(IoFilterChain chain) { IoSession transport = chain.getSession(); SocketAddress localAddress = transport.getLocalAddress(); String nextProtocol = PROTOCOL_HTTP_1_1; if (localAddress instanceof ResourceAddress) { ResourceAddress address = (ResourceAddress) localAddress; if (!address.hasOption(QUALIFIER)) { nextProtocol = address.getOption(NEXT_PROTOCOL); } } assert nextProtocol != null; Set<HttpConnectFilter> connectFilters = connectFiltersByProtocol.get(nextProtocol); assert (connectFilters != null && !connectFilters.isEmpty()); for (HttpConnectFilter connectFilter : connectFilters) { chain.addLast(connectFilter.filterName(), connectFilter.filter()); } LoggingFilter.moveAfterCodec(transport); }
@Override public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception { // GL.debug("http", getClass().getSimpleName() + " request received."); // The HttpPostUpgradeFilter prevents a bug where a 101 WebSocket upgrade response also includes // a WebSocket frame in the same packet. IoFilterChain filterChain = session.getFilterChain(); filterChain.remove(HttpCodecFilter.class); // Give logging filter a chance to move after any remaining codec LoggingFilter.moveAfterCodec(session); // Fire message down the pipeline super.messageReceived(nextFilter, session, message); // We've done our job, so remove ourselves from the filter chain if (filterChain.contains(this)) { filterChain.remove(this); } } }