Home / Function/ Http3PushStreamServerInitializer() — netty Function Reference

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

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