Http2ClientInitializer Class — netty Architecture
Architecture documentation for the Http2ClientInitializer class in Http2ClientInitializer.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 3d194589_1edf_6e5a_e7b1_3add79b11968["Http2ClientInitializer"] 3207617e_a09d_a13b_e65a_89274792f09a["Http2ClientInitializer.java"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|defined in| 3207617e_a09d_a13b_e65a_89274792f09a 3374f1c0_78c2_bea4_1f98_232cca7f24c1["Http2ClientInitializer()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| 3374f1c0_78c2_bea4_1f98_232cca7f24c1 ff062f25_3104_30ff_00bd_7656cbb235e3["initChannel()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| ff062f25_3104_30ff_00bd_7656cbb235e3 cbd7be89_3c75_1446_4abb_98fd4f557bf6["HttpResponseHandler()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| cbd7be89_3c75_1446_4abb_98fd4f557bf6 2541efa9_c7a2_c1da_7edb_099b45e092cd["Http2SettingsHandler()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| 2541efa9_c7a2_c1da_7edb_099b45e092cd 4804e25a_c676_6daf_89ce_d3dd191d19e7["configureEndOfPipeline()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| 4804e25a_c676_6daf_89ce_d3dd191d19e7 91f0fece_507b_58de_8f7b_b73b6467c862["configureSsl()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| 91f0fece_507b_58de_8f7b_b73b6467c862 22eedc29_6e66_560d_c74e_292ba5f1eb16["configureClearText()"] 3d194589_1edf_6e5a_e7b1_3add79b11968 -->|method| 22eedc29_6e66_560d_c74e_292ba5f1eb16
Relationship Graph
Source Code
example/src/main/java/io/netty/example/http2/helloworld/client/Http2ClientInitializer.java lines 48–175
public class Http2ClientInitializer extends ChannelInitializer<SocketChannel> {
private static final Http2FrameLogger logger = new Http2FrameLogger(INFO, Http2ClientInitializer.class);
private final SslContext sslCtx;
private final int maxContentLength;
private HttpToHttp2ConnectionHandler connectionHandler;
private HttpResponseHandler responseHandler;
private Http2SettingsHandler settingsHandler;
public Http2ClientInitializer(SslContext sslCtx, int maxContentLength) {
this.sslCtx = sslCtx;
this.maxContentLength = maxContentLength;
}
@Override
public void initChannel(SocketChannel ch) throws Exception {
final Http2Connection connection = new DefaultHttp2Connection(false);
connectionHandler = new HttpToHttp2ConnectionHandlerBuilder()
.frameListener(new DelegatingDecompressorFrameListener(
connection,
new InboundHttp2ToHttpAdapterBuilder(connection)
.maxContentLength(maxContentLength)
.propagateSettings(true)
.build(),
maxContentLength))
.frameLogger(logger)
.connection(connection)
.build();
responseHandler = new HttpResponseHandler();
settingsHandler = new Http2SettingsHandler(ch.newPromise());
if (sslCtx != null) {
configureSsl(ch);
} else {
configureClearText(ch);
}
}
public HttpResponseHandler responseHandler() {
return responseHandler;
}
public Http2SettingsHandler settingsHandler() {
return settingsHandler;
}
protected void configureEndOfPipeline(ChannelPipeline pipeline) {
pipeline.addLast(settingsHandler, responseHandler);
}
/**
* Configure the pipeline for TLS NPN negotiation to HTTP/2.
*/
private void configureSsl(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
// Specify Host in SSLContext New Handler to add TLS SNI Extension
pipeline.addLast(sslCtx.newHandler(ch.alloc(), Http2Client.HOST, Http2Client.PORT));
// We must wait for the handshake to finish and the protocol to be negotiated before configuring
// the HTTP/2 components of the pipeline.
pipeline.addLast(new ApplicationProtocolNegotiationHandler("") {
@Override
protected void configurePipeline(ChannelHandlerContext ctx, String protocol) {
if (ApplicationProtocolNames.HTTP_2.equals(protocol)) {
ChannelPipeline p = ctx.pipeline();
p.addLast(connectionHandler);
configureEndOfPipeline(p);
return;
}
ctx.close();
throw new IllegalStateException("unknown protocol: " + protocol);
}
});
}
/**
* Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.
*/
private void configureClearText(SocketChannel ch) {
HttpClientCodec sourceCodec = new HttpClientCodec();
Http2ClientUpgradeCodec upgradeCodec = new Http2ClientUpgradeCodec(connectionHandler);
HttpClientUpgradeHandler upgradeHandler = new HttpClientUpgradeHandler(sourceCodec, upgradeCodec,
maxContentLength);
Defined In
Source
Frequently Asked Questions
What is the Http2ClientInitializer class?
Http2ClientInitializer is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http2/helloworld/client/Http2ClientInitializer.java.
Where is Http2ClientInitializer defined?
Http2ClientInitializer is defined in example/src/main/java/io/netty/example/http2/helloworld/client/Http2ClientInitializer.java at line 48.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free