1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.http.file;
17
18 import org.jboss.netty.channel.ChannelPipeline;
19 import org.jboss.netty.channel.ChannelPipelineFactory;
20 import org.jboss.netty.handler.codec.http.HttpChunkAggregator;
21 import org.jboss.netty.handler.codec.http.HttpRequestDecoder;
22 import org.jboss.netty.handler.codec.http.HttpResponseEncoder;
23 import org.jboss.netty.handler.ssl.SslContext;
24 import org.jboss.netty.handler.stream.ChunkedWriteHandler;
25
26 import static org.jboss.netty.channel.Channels.*;
27
28 public class HttpStaticFileServerPipelineFactory implements ChannelPipelineFactory {
29
30 private final SslContext sslCtx;
31
32 public HttpStaticFileServerPipelineFactory(SslContext sslCtx) {
33 this.sslCtx = sslCtx;
34 }
35
36 public ChannelPipeline getPipeline() {
37
38 ChannelPipeline pipeline = pipeline();
39
40 if (sslCtx != null) {
41 pipeline.addLast("ssl", sslCtx.newHandler());
42 }
43 pipeline.addLast("decoder", new HttpRequestDecoder());
44 pipeline.addLast("aggregator", new HttpChunkAggregator(65536));
45 pipeline.addLast("encoder", new HttpResponseEncoder());
46 pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
47
48 pipeline.addLast("handler", new HttpStaticFileServerHandler());
49 return pipeline;
50 }
51 }