Http3PushStreamServerInitializer() — netty Function Reference
Architecture documentation for the Http3PushStreamServerInitializer() function in Http3ServerPushStreamManager.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD d032286d_e614_a333_6fe6_f4f6d6c0c5c9["Http3PushStreamServerInitializer()"] 603de3da_f437_97ed_be00_9d4c1ccef895["Http3ServerPushStreamManager"] d032286d_e614_a333_6fe6_f4f6d6c0c5c9 -->|defined in| 603de3da_f437_97ed_be00_9d4c1ccef895 style d032286d_e614_a333_6fe6_f4f6d6c0c5c9 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ServerPushStreamManager.java lines 212–270
private Http3PushStreamServerInitializer pushStreamInitializer(long pushId, @Nullable ChannelHandler handler) {
final Http3PushStreamServerInitializer initializer;
if (handler instanceof Http3PushStreamServerInitializer) {
initializer = (Http3PushStreamServerInitializer) handler;
} else {
initializer = null;
}
return new Http3PushStreamServerInitializer(pushId) {
@Override
protected void initPushStream(QuicStreamChannel ch) {
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
private boolean stateUpdated;
@Override
public void channelActive(ChannelHandlerContext ctx) {
if (!stateUpdated) {
updatePushStreamsMap();
}
}
@Override
public void handlerAdded(ChannelHandlerContext ctx) {
if (!stateUpdated && ctx.channel().isActive()) {
updatePushStreamsMap();
}
}
private void updatePushStreamsMap() {
assert !stateUpdated;
stateUpdated = true;
pushStreams.compute(pushId, (id, existing) -> {
if (existing == AWAITING_STREAM_ESTABLISHMENT) {
return ch;
}
if (existing == CANCELLED_STREAM) {
ch.close();
return null; // remove push stream.
}
throw new IllegalStateException("Unexpected push stream state " +
existing + " for pushId: " + id);
});
}
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
if (evt == ChannelInputShutdownReadComplete.INSTANCE) {
pushStreams.remove(pushId);
}
ctx.fireUserEventTriggered(evt);
}
});
if (initializer != null) {
initializer.initPushStream(ch);
} else if (handler != null) {
ch.pipeline().addLast(handler);
}
}
};
}
Domain
Subdomains
Source
Frequently Asked Questions
What does Http3PushStreamServerInitializer() do?
Http3PushStreamServerInitializer() is a function in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ServerPushStreamManager.java.
Where is Http3PushStreamServerInitializer() defined?
Http3PushStreamServerInitializer() is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ServerPushStreamManager.java at line 212.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free