1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package goldengate.commandexec.client;
22
23 import org.jboss.netty.channel.Channel;
24 import org.jboss.netty.channel.ChannelPipeline;
25 import org.jboss.netty.channel.ChannelPipelineFactory;
26 import org.jboss.netty.channel.Channels;
27 import org.jboss.netty.channel.group.ChannelGroup;
28 import org.jboss.netty.channel.group.DefaultChannelGroup;
29 import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
30 import org.jboss.netty.handler.codec.frame.Delimiters;
31 import org.jboss.netty.handler.codec.string.StringDecoder;
32 import org.jboss.netty.handler.codec.string.StringEncoder;
33
34
35
36
37
38
39
40 public class LocalExecClientPipelineFactory implements ChannelPipelineFactory {
41
42 private final ChannelGroup channelGroup;
43
44 public LocalExecClientPipelineFactory() {
45 channelGroup = new DefaultChannelGroup("LocalExecClient");
46 }
47
48 public ChannelPipeline getPipeline() throws Exception {
49
50 ChannelPipeline pipeline = Channels.pipeline();
51
52
53 pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192,
54 Delimiters.lineDelimiter()));
55 pipeline.addLast("decoder", new StringDecoder());
56 pipeline.addLast("encoder", new StringEncoder());
57
58
59 LocalExecClientHandler localExecClientHandler = new LocalExecClientHandler(this);
60 pipeline.addLast("handler", localExecClientHandler);
61
62 return pipeline;
63 }
64
65
66
67
68 public void addChannel(Channel channel) {
69 channelGroup.add(channel);
70 }
71
72
73
74
75 public void removeChannel(Channel channel) {
76 channelGroup.remove(channel);
77 }
78
79
80
81 public void releaseResources() {
82 channelGroup.close();
83 }
84 }