package ddth.dasp.servlet.netty.api; import java.util.concurrent.TimeUnit; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.handler.codec.http.HttpChunkAggregator; import org.jboss.netty.handler.codec.http.HttpRequestDecoder; import org.jboss.netty.handler.codec.http.HttpResponseEncoder; import org.jboss.netty.handler.timeout.IdleStateHandler; import org.jboss.netty.util.Timer; public class JsonApiPipelineFactory implements ChannelPipelineFactory { private final ChannelHandler idleStateHandler; private final int maxRequestSize; public JsonApiPipelineFactory(Timer timer, long readTimeoutMillisecs, long writeTimeoutMillisecs, int maxRequestSize) { this.idleStateHandler = new IdleStateHandler(timer, readTimeoutMillisecs, writeTimeoutMillisecs, 0, TimeUnit.MILLISECONDS); this.maxRequestSize = maxRequestSize; } @Override public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("decoder", new HttpRequestDecoder()); pipeline.addLast("aggregator", new HttpChunkAggregator(maxRequestSize)); pipeline.addLast("encoder", new HttpResponseEncoder()); pipeline.addLast("timeout", idleStateHandler); pipeline.addLast("handler", new JsonApiHandler()); return pipeline; } }