AbstractQPackStreamInitializer Class — netty Architecture
Architecture documentation for the AbstractQPackStreamInitializer class in Http3ControlStreamInboundHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 4b53bebf_0e3a_cf76_df02_11de8f793418["AbstractQPackStreamInitializer"] 962d9bec_657d_ee43_1a3c_6ac7f20104fb["Http3ControlStreamInboundHandler.java"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|defined in| 962d9bec_657d_ee43_1a3c_6ac7f20104fb a13cab40_7baf_5d23_a501_1a07dc097379["AbstractQPackStreamInitializer()"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|method| a13cab40_7baf_5d23_a501_1a07dc097379 b69250c2_be16_a5db_abd7_24a07172a086["channelActive()"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|method| b69250c2_be16_a5db_abd7_24a07172a086 1d74b42c_0a59_1c4f_c8b6_4c39c330d903["userEventTriggered()"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|method| 1d74b42c_0a59_1c4f_c8b6_4c39c330d903 5c4ff6fe_bd8a_81fd_76c1_e0a1356f740a["channelInactive()"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|method| 5c4ff6fe_bd8a_81fd_76c1_e0a1356f740a 4b29b43a_f6b6_eeec_b5cd_3a6cdc7c785b["streamAvailable()"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|method| 4b29b43a_f6b6_eeec_b5cd_3a6cdc7c785b b8782597_9d58_5399_b503_13ddd6c30b3d["streamClosed()"] 4b53bebf_0e3a_cf76_df02_11de8f793418 -->|method| b8782597_9d58_5399_b503_13ddd6c30b3d
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ControlStreamInboundHandler.java lines 226–268
private abstract static class AbstractQPackStreamInitializer extends ChannelInboundHandlerAdapter {
private final int streamType;
protected final QpackAttributes attributes;
AbstractQPackStreamInitializer(int streamType, QpackAttributes attributes) {
this.streamType = streamType;
this.attributes = attributes;
}
@Override
public final void channelActive(ChannelHandlerContext ctx) {
// We need to write the streamType into the stream before doing anything else.
// See https://tools.ietf.org/html/draft-ietf-quic-http-32#section-6.2.1
// Just allocate 8 bytes which would be the max needed.
ByteBuf buffer = ctx.alloc().buffer(8);
Http3CodecUtils.writeVariableLengthInteger(buffer, streamType);
closeOnFailure(ctx.writeAndFlush(buffer));
streamAvailable(ctx);
ctx.fireChannelActive();
}
@Override
public final void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
streamClosed(ctx);
if (evt instanceof ChannelInputShutdownEvent) {
// See https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#section-4.2
criticalStreamClosed(ctx);
}
ctx.fireUserEventTriggered(evt);
}
@Override
public void channelInactive(ChannelHandlerContext ctx) {
streamClosed(ctx);
// See https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#section-4.2
criticalStreamClosed(ctx);
ctx.fireChannelInactive();
}
protected abstract void streamAvailable(ChannelHandlerContext ctx);
protected abstract void streamClosed(ChannelHandlerContext ctx);
}
Defined In
Source
Frequently Asked Questions
What is the AbstractQPackStreamInitializer class?
AbstractQPackStreamInitializer is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ControlStreamInboundHandler.java.
Where is AbstractQPackStreamInitializer defined?
AbstractQPackStreamInitializer is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ControlStreamInboundHandler.java at line 226.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free