1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package io.netty.example.factorial;
17  
18  import io.netty.channel.ChannelInitializer;
19  import io.netty.channel.ChannelPipeline;
20  import io.netty.channel.socket.SocketChannel;
21  import io.netty.handler.codec.compression.ZlibCodecFactory;
22  import io.netty.handler.codec.compression.ZlibWrapper;
23  import io.netty.handler.ssl.SslContext;
24  
25  
26  
27  
28  public class FactorialClientInitializer extends ChannelInitializer<SocketChannel> {
29  
30      private static final int MAX_CONTENT_LENGTH = 65536;
31  
32      private final SslContext sslCtx;
33  
34      public FactorialClientInitializer(SslContext sslCtx) {
35          this.sslCtx = sslCtx;
36      }
37  
38      @Override
39      public void initChannel(SocketChannel ch) {
40          ChannelPipeline pipeline = ch.pipeline();
41  
42          if (sslCtx != null) {
43              pipeline.addLast(sslCtx.newHandler(ch.alloc(), FactorialClient.HOST, FactorialClient.PORT));
44          }
45  
46          
47          pipeline.addLast(ZlibCodecFactory.newZlibEncoder(ZlibWrapper.GZIP));
48          pipeline.addLast(ZlibCodecFactory.newZlibDecoder(ZlibWrapper.GZIP, MAX_CONTENT_LENGTH));
49  
50          
51          pipeline.addLast(new BigIntegerDecoder());
52          pipeline.addLast(new NumberEncoder());
53  
54          
55          pipeline.addLast(new FactorialClientHandler());
56      }
57  }