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) {
throw new RuntimeException("No codec configured");
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());
pipeline.addLast("exceptionLogger", new XioExceptionLogger());
ChannelHandler applicationHandler = getApplicationHandler();
addHandler(pipeline, "applicationHandler", applicationHandler);