package ddth.dasp.hetty.front;
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.HttpRequestDecoder;
import org.jboss.netty.handler.codec.http.HttpResponseEncoder;
import org.jboss.netty.handler.timeout.IdleStateHandler;
import org.jboss.netty.util.Timer;
import ddth.dasp.hetty.message.IMessageFactory;
import ddth.dasp.hetty.qnt.IQueueWriter;
public class HettyPipelineFactory implements ChannelPipelineFactory {
private final ChannelHandler idleStateHandler;
private IQueueWriter queueWriter;
private IMessageFactory messageFactory;
public HettyPipelineFactory(IQueueWriter queueWriter, IMessageFactory messageFactory,
Timer timer, long readTimeoutMillisecs, long writeTimeoutMillisecs) {
this.queueWriter = queueWriter;
this.messageFactory = messageFactory;
this.idleStateHandler = new IdleStateHandler(timer, readTimeoutMillisecs,
writeTimeoutMillisecs, 0, TimeUnit.MILLISECONDS);
}
/**
* Maps a host-queueWriter.
*
* @param host
* @param queueWriter
*/
public void mapHostQueueWriter(String host, IQueueWriter queueWriter) {
// hostQueueWriterMapping.put(host, queueWriter);
}
/**
* Unmaps an existing host-queueWriter.
*
* @param host
*/
public void unmapHostQueueWriter(String host) {
// hostQueueWriterMapping.remove(host);
}
@Override
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("decoder", new HttpRequestDecoder());
// pipeline.addLast("aggregator", new HttpChunkAggregator(128 * 1024));
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("timeout", idleStateHandler);
pipeline.addLast("deflater", new HettyHttpContentCompressor());
pipeline.addLast("handler", new HettyHttpHandler(queueWriter, messageFactory));
return pipeline;
}
}