package org.infinispan.server.hotrod.transport;
import org.infinispan.server.core.ProtocolServer;
import org.infinispan.server.core.configuration.ProtocolServerConfiguration;
import org.infinispan.server.core.transport.IdleStateHandlerProvider;
import org.infinispan.server.core.transport.NettyInitializer;
import io.netty.channel.Channel;
import io.netty.channel.ChannelPipeline;
import io.netty.handler.timeout.IdleStateHandler;
/**
* A channel pipeline factory for environments where idle timeout is enabled. This is a trait, useful to extend by an
* implementation channel initializer.
*
* @author Galder ZamarreƱo
* @author William Burns
* @since 5.1
*/
public class TimeoutEnabledChannelInitializer<C extends ProtocolServerConfiguration> implements NettyInitializer {
private final ProtocolServer<C> hotRodServer;
public TimeoutEnabledChannelInitializer(ProtocolServer<C> hotRodServer) {
this.hotRodServer = hotRodServer;
}
@Override
public void initializeChannel(Channel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast("idleHandler", new IdleStateHandler(hotRodServer.getConfiguration().idleTimeout(), 0, 0));
pipeline.addLast("idleHandlerProvider", new IdleStateHandlerProvider());
}
}