1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.localtime;
17
18 import org.jboss.netty.channel.ChannelPipeline;
19 import org.jboss.netty.channel.ChannelPipelineFactory;
20 import org.jboss.netty.handler.codec.protobuf.ProtobufDecoder;
21 import org.jboss.netty.handler.codec.protobuf.ProtobufEncoder;
22 import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
23 import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
24 import org.jboss.netty.handler.ssl.SslContext;
25
26 import static org.jboss.netty.channel.Channels.*;
27
28 public class LocalTimeServerPipelineFactory implements ChannelPipelineFactory {
29
30 private final SslContext sslCtx;
31
32 public LocalTimeServerPipelineFactory(SslContext sslCtx) {
33 this.sslCtx = sslCtx;
34 }
35
36 public ChannelPipeline getPipeline() {
37 ChannelPipeline p = pipeline();
38 if (sslCtx != null) {
39 p.addLast("ssl", sslCtx.newHandler());
40 }
41 p.addLast("frameDecoder", new ProtobufVarint32FrameDecoder());
42 p.addLast("protobufDecoder", new ProtobufDecoder(LocalTimeProtocol.Locations.getDefaultInstance()));
43
44 p.addLast("frameEncoder", new ProtobufVarint32LengthFieldPrepender());
45 p.addLast("protobufEncoder", new ProtobufEncoder());
46
47 p.addLast("handler", new LocalTimeServerHandler());
48 return p;
49 }
50 }