XioServerState state, ChannelPipeline pipeline) { ChannelHandler idleDisconnectHandler = getIdleDisconnectHandler(config.getLimits()); pipeline.addLast("idleDisconnectHandler", idleDisconnectHandler); pipeline.addLast( pipeline.addLast("connectionContext", new ConnectionContextHandler()); pipeline.addLast("globalChannelStatistics", state.getChannelStatistics()); ChannelHandler encryptionHandler = getEncryptionHandler(config, state); addHandler(pipeline, "encryptionHandler", encryptionHandler); addHandler(pipeline, "tls authentication handler", getTlsAuthenticationHandler()); if (config.isMessageLoggerEnabled()) { pipeline.addLast("messageLogger", new XioMessageLogger(XioServer.class, config.getName())); addHandler(pipeline, "codecNegotiation", getCodecNegotiationHandler(config)); ChannelHandler codecHandler = getCodecHandler(config); if (codecHandler != null) { pipeline.addLast("codec", codecHandler); addHandler(pipeline, "application codec", getApplicationCodec(config)); addHandler(pipeline, "metric handler", new MetricsHandler(appState.getMetricRegistry())); addHandler(pipeline, "distributed tracing", state.tracingHandler(appState)); addHandler(pipeline, "application router", getApplicationRouter()); addHandler(pipeline, "authentication handler", getAuthenticationHandler()); pipeline.addLast("l7DeterministicRuleEngine", new Http1Filter(appState.getHttp1FilterConfig())); addHandler(pipeline, "authorization handler", getAuthorizationHandler()); ChannelHandler applicationHandler = getApplicationHandler(); addHandler(pipeline, "applicationHandler", applicationHandler);