CleartextHttp2ServerUpgradeHandler Class — netty Architecture
Architecture documentation for the CleartextHttp2ServerUpgradeHandler class in CleartextHttp2ServerUpgradeHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8437dc8d_808f_d72e_cee8_b6e3a5bf8173["CleartextHttp2ServerUpgradeHandler"] f0299706_204d_1815_80cd_a87c010c0d3c["CleartextHttp2ServerUpgradeHandler.java"] 8437dc8d_808f_d72e_cee8_b6e3a5bf8173 -->|defined in| f0299706_204d_1815_80cd_a87c010c0d3c f32e72ca_1aa0_f918_1555_3a9e16b71c70["CleartextHttp2ServerUpgradeHandler()"] 8437dc8d_808f_d72e_cee8_b6e3a5bf8173 -->|method| f32e72ca_1aa0_f918_1555_3a9e16b71c70 cedd3441_dd00_3aad_59fa_5d62784223d6["handlerAdded()"] 8437dc8d_808f_d72e_cee8_b6e3a5bf8173 -->|method| cedd3441_dd00_3aad_59fa_5d62784223d6 18e7382b_2e92_617f_b6b3_cfb23db693a7["decode()"] 8437dc8d_808f_d72e_cee8_b6e3a5bf8173 -->|method| 18e7382b_2e92_617f_b6b3_cfb23db693a7
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java lines 39–105
public final class CleartextHttp2ServerUpgradeHandler extends ByteToMessageDecoder {
private static final ByteBuf CONNECTION_PREFACE = unreleasableBuffer(connectionPrefaceBuf()).asReadOnly();
private final HttpServerCodec httpServerCodec;
private final HttpServerUpgradeHandler httpServerUpgradeHandler;
private final ChannelHandler http2ServerHandler;
/**
* Creates the channel handler provide cleartext HTTP/2 upgrade from HTTP
* upgrade or prior knowledge
*
* @param httpServerCodec the http server codec
* @param httpServerUpgradeHandler the http server upgrade handler for HTTP/2
* @param http2ServerHandler the http2 server handler, will be added into pipeline
* when starting HTTP/2 by prior knowledge
*/
public CleartextHttp2ServerUpgradeHandler(HttpServerCodec httpServerCodec,
HttpServerUpgradeHandler httpServerUpgradeHandler,
ChannelHandler http2ServerHandler) {
this.httpServerCodec = checkNotNull(httpServerCodec, "httpServerCodec");
this.httpServerUpgradeHandler = checkNotNull(httpServerUpgradeHandler, "httpServerUpgradeHandler");
this.http2ServerHandler = checkNotNull(http2ServerHandler, "http2ServerHandler");
}
@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
ctx.pipeline()
.addAfter(ctx.name(), null, httpServerUpgradeHandler)
.addAfter(ctx.name(), null, httpServerCodec);
}
/**
* Peek inbound message to determine current connection wants to start HTTP/2
* by HTTP upgrade or prior knowledge
*/
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
int prefaceLength = CONNECTION_PREFACE.readableBytes();
int bytesRead = Math.min(in.readableBytes(), prefaceLength);
if (!ByteBufUtil.equals(CONNECTION_PREFACE, CONNECTION_PREFACE.readerIndex(),
in, in.readerIndex(), bytesRead)) {
ctx.pipeline().remove(this);
} else if (bytesRead == prefaceLength) {
// Full h2 preface match, removed source codec, using http2 codec to handle
// following network traffic
ctx.pipeline()
.remove(httpServerCodec)
.remove(httpServerUpgradeHandler);
ctx.pipeline().addAfter(ctx.name(), null, http2ServerHandler);
ctx.pipeline().remove(this);
ctx.fireUserEventTriggered(PriorKnowledgeUpgradeEvent.INSTANCE);
}
}
/**
* User event that is fired to notify about HTTP/2 protocol is started.
*/
public static final class PriorKnowledgeUpgradeEvent {
private static final PriorKnowledgeUpgradeEvent INSTANCE = new PriorKnowledgeUpgradeEvent();
private PriorKnowledgeUpgradeEvent() {
}
}
}
Defined In
Source
Frequently Asked Questions
What is the CleartextHttp2ServerUpgradeHandler class?
CleartextHttp2ServerUpgradeHandler is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java.
Where is CleartextHttp2ServerUpgradeHandler defined?
CleartextHttp2ServerUpgradeHandler is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java at line 39.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free