package org.infinispan.server.hotrod.transport; import java.util.concurrent.ExecutorService; import org.infinispan.commons.logging.LogFactory; import org.infinispan.server.core.transport.NettyChannelInitializer; import org.infinispan.server.core.transport.NettyTransport; import org.infinispan.server.hotrod.AuthenticationHandler; import org.infinispan.server.hotrod.ContextHandler; import org.infinispan.server.hotrod.HotRodExceptionHandler; import org.infinispan.server.hotrod.HotRodServer; import org.infinispan.server.hotrod.LocalContextHandler; import org.infinispan.server.hotrod.logging.HotRodAccessLoggingHandler; import org.infinispan.server.hotrod.logging.Log; import org.infinispan.server.hotrod.logging.LoggingContextHandler; import io.netty.channel.Channel; import io.netty.channel.ChannelOutboundHandler; /** * HotRod specific channel initializer * * @author wburns * @since 9.0 */ public class HotRodChannelInitializer extends NettyChannelInitializer { protected final HotRodServer hotRodServer; protected final NettyTransport transport; protected final ExecutorService executor; public HotRodChannelInitializer(HotRodServer hotRodServer, NettyTransport transport, ChannelOutboundHandler encoder, ExecutorService executor) { super(hotRodServer, transport, encoder); this.hotRodServer = hotRodServer; this.transport = transport; this.executor = executor; } @Override public void initializeChannel(Channel ch) throws Exception { super.initializeChannel(ch); AuthenticationHandler authHandler = hotRodServer.getConfiguration().authentication().enabled() ? new AuthenticationHandler(hotRodServer) : null; if (authHandler != null) { ch.pipeline().addLast("authentication-1", authHandler); } ch.pipeline().addLast("local-handler", new LocalContextHandler(transport)); ch.pipeline().addLast("handler", new ContextHandler(hotRodServer, transport, executor)); ch.pipeline().addLast("exception", new HotRodExceptionHandler()); // Logging handlers if (LogFactory.getLog(HotRodAccessLoggingHandler.class, Log.class).isTraceEnabled()) { ch.pipeline().addBefore("decoder", "logging", new HotRodAccessLoggingHandler()); ch.pipeline().addAfter("encoder", "logging-context", LoggingContextHandler.getInstance()); } } }