View Javadoc

1   /**
2      This file is part of GoldenGate Project (named also GoldenGate or GG).
3   
4      Copyright 2009, Frederic Bregier, and individual contributors by the @author
5      tags. See the COPYRIGHT.txt in the distribution for a full listing of
6      individual contributors.
7   
8      All GoldenGate Project is free software: you can redistribute it and/or 
9      modify it under the terms of the GNU General Public License as published 
10     by the Free Software Foundation, either version 3 of the License, or
11     (at your option) any later version.
12  
13     GoldenGate is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17  
18     You should have received a copy of the GNU General Public License
19     along with GoldenGate .  If not, see <http://www.gnu.org/licenses/>.
20   */
21  package openr66.protocol.http;
22  
23  import static org.jboss.netty.channel.Channels.pipeline;
24  import openr66.protocol.configuration.Configuration;
25  
26  import org.jboss.netty.channel.ChannelPipeline;
27  import org.jboss.netty.channel.ChannelPipelineFactory;
28  import org.jboss.netty.handler.codec.http.HttpChunkAggregator;
29  import org.jboss.netty.handler.codec.http.HttpContentCompressor;
30  import org.jboss.netty.handler.codec.http.HttpRequestDecoder;
31  import org.jboss.netty.handler.codec.http.HttpResponseEncoder;
32  import org.jboss.netty.handler.execution.ExecutionHandler;
33  
34  /**
35   * Pipeline Factory for HTTP support
36   * @author Frederic Bregier
37   *
38   */
39  public class HttpPipelineFactory implements ChannelPipelineFactory {
40      public boolean useHttpCompression = false;
41      public HttpPipelineFactory(boolean useHttpCompression) {
42          this.useHttpCompression = useHttpCompression;
43      }
44      public ChannelPipeline getPipeline() throws Exception {
45          // Create a default pipeline implementation.
46          ChannelPipeline pipeline = pipeline();
47  
48          pipeline.addLast("decoder", new HttpRequestDecoder());
49          pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
50          pipeline.addLast("encoder", new HttpResponseEncoder());
51          pipeline.addLast("pipelineExecutor", new ExecutionHandler(
52                  Configuration.configuration.getHttpPipelineExecutor()));
53          if (useHttpCompression) {
54              pipeline.addLast("deflater", new HttpContentCompressor());
55          }
56          pipeline.addLast("handler", new HttpFormattedHandler());
57          return pipeline;
58      }
59  }