1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.commandexec.client;
21
22 import io.netty.channel.Channel;
23 import io.netty.channel.ChannelInitializer;
24 import io.netty.channel.ChannelPipeline;
25 import io.netty.channel.group.ChannelGroup;
26 import io.netty.channel.group.DefaultChannelGroup;
27 import io.netty.channel.socket.SocketChannel;
28 import io.netty.handler.codec.DelimiterBasedFrameDecoder;
29 import io.netty.handler.codec.Delimiters;
30 import io.netty.handler.codec.string.StringDecoder;
31 import io.netty.handler.codec.string.StringEncoder;
32 import io.netty.util.concurrent.DefaultEventExecutor;
33 import org.waarp.common.utility.WaarpStringUtils;
34
35
36
37
38
39 public class LocalExecClientInitializer
40 extends ChannelInitializer<SocketChannel> {
41
42 private final ChannelGroup channelGroup;
43
44 public LocalExecClientInitializer() {
45 channelGroup =
46 new DefaultChannelGroup("LocalExecClient", new DefaultEventExecutor());
47 }
48
49 @Override
50 protected void initChannel(final SocketChannel ch) {
51
52 final ChannelPipeline pipeline = ch.pipeline();
53
54
55 pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192,
56 Delimiters.lineDelimiter()));
57 pipeline.addLast("decoder", new StringDecoder(WaarpStringUtils.UTF8));
58 pipeline.addLast("encoder", new StringEncoder(WaarpStringUtils.UTF8));
59
60
61 final LocalExecClientHandler localExecClientHandler =
62 new LocalExecClientHandler(this);
63 pipeline.addLast("handler", localExecClientHandler);
64 }
65
66
67
68
69
70
71 public final void addChannel(final Channel channel) {
72 channelGroup.add(channel);
73 }
74
75
76
77
78 public final void releaseResources() {
79 channelGroup.close();
80 }
81 }