Skip to content

Commit 3397bfd

Browse files
author
Stephane Landelle
committed
Provide a way to configure ChannelPipelines, close AsyncHttpClient#717
1 parent 22f4fcb commit 3397bfd

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

src/main/java/com/ning/http/client/providers/netty/NettyAsyncHttpProviderConfig.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.ning.http.client.providers.netty;
1515

1616
import org.jboss.netty.channel.Channel;
17+
import org.jboss.netty.channel.ChannelPipeline;
1718
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
1819
import org.jboss.netty.util.Timer;
1920

@@ -101,6 +102,11 @@ public Set<Map.Entry<String, Object>> propertiesSet() {
101102
*/
102103
private ExecutorService bossExecutorService;
103104

105+
private AdditionalPipelineInitializer httpAdditionalPipelineInitializer;
106+
private AdditionalPipelineInitializer wsAdditionalPipelineInitializer;
107+
private AdditionalPipelineInitializer httpsAdditionalPipelineInitializer;
108+
private AdditionalPipelineInitializer wssAdditionalPipelineInitializer;
109+
104110
/**
105111
* Allow configuring Netty's HttpClientCodecs.
106112
*/
@@ -152,6 +158,38 @@ public ExecutorService getBossExecutorService() {
152158
public void setBossExecutorService(ExecutorService bossExecutorService) {
153159
this.bossExecutorService = bossExecutorService;
154160
}
161+
162+
public AdditionalPipelineInitializer getHttpAdditionalPipelineInitializer() {
163+
return httpAdditionalPipelineInitializer;
164+
}
165+
166+
public void setHttpAdditionalPipelineInitializer(AdditionalPipelineInitializer httpAdditionalPipelineInitializer) {
167+
this.httpAdditionalPipelineInitializer = httpAdditionalPipelineInitializer;
168+
}
169+
170+
public AdditionalPipelineInitializer getWsAdditionalPipelineInitializer() {
171+
return wsAdditionalPipelineInitializer;
172+
}
173+
174+
public void setWsAdditionalPipelineInitializer(AdditionalPipelineInitializer wsAdditionalPipelineInitializer) {
175+
this.wsAdditionalPipelineInitializer = wsAdditionalPipelineInitializer;
176+
}
177+
178+
public AdditionalPipelineInitializer getHttpsAdditionalPipelineInitializer() {
179+
return httpsAdditionalPipelineInitializer;
180+
}
181+
182+
public void setHttpsAdditionalPipelineInitializer(AdditionalPipelineInitializer httpsAdditionalPipelineInitializer) {
183+
this.httpsAdditionalPipelineInitializer = httpsAdditionalPipelineInitializer;
184+
}
185+
186+
public AdditionalPipelineInitializer getWssAdditionalPipelineInitializer() {
187+
return wssAdditionalPipelineInitializer;
188+
}
189+
190+
public void setWssAdditionalPipelineInitializer(AdditionalPipelineInitializer wssAdditionalPipelineInitializer) {
191+
this.wssAdditionalPipelineInitializer = wssAdditionalPipelineInitializer;
192+
}
155193

156194
public int getHttpClientCodecMaxInitialLineLength() {
157195
return httpClientCodecMaxInitialLineLength;
@@ -261,6 +299,11 @@ public static interface NettyWebSocketFactory {
261299
NettyWebSocket newNettyWebSocket(Channel channel, NettyAsyncHttpProviderConfig nettyConfig);
262300
}
263301

302+
public static interface AdditionalPipelineInitializer {
303+
304+
void initPipeline(ChannelPipeline pipeline) throws Exception;
305+
}
306+
264307
public class DefaultNettyWebSocketFactory implements NettyWebSocketFactory {
265308

266309
@Override

src/main/java/com/ning/http/client/providers/netty/channel/ChannelManager.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,10 @@ public ChannelPipeline getPipeline() throws Exception {
207207
pipeline.addLast(INFLATER_HANDLER, new HttpContentDecompressor());
208208
pipeline.addLast(CHUNKED_WRITER_HANDLER, new ChunkedWriteHandler());
209209
pipeline.addLast(HTTP_PROCESSOR, httpProcessor);
210+
211+
if (nettyConfig.getHttpAdditionalPipelineInitializer() != null)
212+
nettyConfig.getHttpAdditionalPipelineInitializer().initPipeline(pipeline);
213+
210214
return pipeline;
211215
}
212216
});
@@ -217,6 +221,10 @@ public ChannelPipeline getPipeline() throws Exception {
217221
ChannelPipeline pipeline = pipeline();
218222
pipeline.addLast(HTTP_HANDLER, newHttpClientCodec());
219223
pipeline.addLast(WS_PROCESSOR, wsProcessor);
224+
225+
if (nettyConfig.getWsAdditionalPipelineInitializer() != null)
226+
nettyConfig.getWsAdditionalPipelineInitializer().initPipeline(pipeline);
227+
220228
return pipeline;
221229
}
222230
});
@@ -230,6 +238,10 @@ public ChannelPipeline getPipeline() throws Exception {
230238
pipeline.addLast(INFLATER_HANDLER, new HttpContentDecompressor());
231239
pipeline.addLast(CHUNKED_WRITER_HANDLER, new ChunkedWriteHandler());
232240
pipeline.addLast(HTTP_PROCESSOR, httpProcessor);
241+
242+
if (nettyConfig.getHttpsAdditionalPipelineInitializer() != null)
243+
nettyConfig.getHttpsAdditionalPipelineInitializer().initPipeline(pipeline);
244+
233245
return pipeline;
234246
}
235247
});
@@ -241,6 +253,10 @@ public ChannelPipeline getPipeline() throws Exception {
241253
pipeline.addLast(SSL_HANDLER, new SslInitializer(ChannelManager.this));
242254
pipeline.addLast(HTTP_HANDLER, newHttpClientCodec());
243255
pipeline.addLast(WS_PROCESSOR, wsProcessor);
256+
257+
if (nettyConfig.getWssAdditionalPipelineInitializer() != null)
258+
nettyConfig.getWssAdditionalPipelineInitializer().initPipeline(pipeline);
259+
244260
return pipeline;
245261
}
246262
});

0 commit comments

Comments
 (0)