Home / Class/ Http3UnidirectionalStreamInboundClientHandler Class — netty Architecture

Http3UnidirectionalStreamInboundClientHandler Class — netty Architecture

Architecture documentation for the Http3UnidirectionalStreamInboundClientHandler class in Http3UnidirectionalStreamInboundClientHandler.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  813bb225_c44b_64db_35ef_faef806aa375["Http3UnidirectionalStreamInboundClientHandler"]
  4ce7215a_6c8c_612e_2fbb_2ee92a7a8753["Http3UnidirectionalStreamInboundClientHandler.java"]
  813bb225_c44b_64db_35ef_faef806aa375 -->|defined in| 4ce7215a_6c8c_612e_2fbb_2ee92a7a8753
  2f37aec5_93a0_72b9_0211_b31bc7c700ec["Http3UnidirectionalStreamInboundClientHandler()"]
  813bb225_c44b_64db_35ef_faef806aa375 -->|method| 2f37aec5_93a0_72b9_0211_b31bc7c700ec
  8ce0ed3d_651f_0799_f995_4c792cda21c9["initPushStream()"]
  813bb225_c44b_64db_35ef_faef806aa375 -->|method| 8ce0ed3d_651f_0799_f995_4c792cda21c9

Relationship Graph

Source Code

codec-http3/src/main/java/io/netty/handler/codec/http3/Http3UnidirectionalStreamInboundClientHandler.java lines 27–62

final class Http3UnidirectionalStreamInboundClientHandler extends Http3UnidirectionalStreamInboundHandler {
    private final LongFunction<ChannelHandler> pushStreamHandlerFactory;

    Http3UnidirectionalStreamInboundClientHandler(
            Http3FrameCodecFactory codecFactory,
            Http3Settings.NonStandardHttp3SettingsValidator nonStandardSettingsValidator,
            Http3ControlStreamInboundHandler localControlStreamHandler,
            Http3ControlStreamOutboundHandler remoteControlStreamHandler,
            @Nullable LongFunction<ChannelHandler> unknownStreamHandlerFactory,
            @Nullable LongFunction<ChannelHandler> pushStreamHandlerFactory,
            Supplier<ChannelHandler> qpackEncoderHandlerFactory, Supplier<ChannelHandler> qpackDecoderHandlerFactory) {
        super(codecFactory, nonStandardSettingsValidator,
                localControlStreamHandler, remoteControlStreamHandler, unknownStreamHandlerFactory,
                qpackEncoderHandlerFactory, qpackDecoderHandlerFactory);
        this.pushStreamHandlerFactory = pushStreamHandlerFactory == null ? __ -> ReleaseHandler.INSTANCE :
                pushStreamHandlerFactory;
    }

    @Override
    void initPushStream(ChannelHandlerContext ctx, long pushId) {
        // See https://tools.ietf.org/html/draft-ietf-quic-http-32#section-4.4
        Long maxPushId = remoteControlStreamHandler.sentMaxPushId();
        if (maxPushId == null) {
            Http3CodecUtils.connectionError(ctx, Http3ErrorCode.H3_ID_ERROR,
                    "Received push stream before sending MAX_PUSH_ID frame.", false);
        } else if (maxPushId < pushId) {
            Http3CodecUtils.connectionError(ctx, Http3ErrorCode.H3_ID_ERROR,
                    "Received push stream with ID " + pushId + " greater than the max push ID " + maxPushId
                            + '.', false);
        } else {
            // Replace this handler with the actual push stream handlers.
            final ChannelHandler pushStreamHandler = pushStreamHandlerFactory.apply(pushId);
            ctx.pipeline().replace(this, null, pushStreamHandler);
        }
    }
}

Frequently Asked Questions

What is the Http3UnidirectionalStreamInboundClientHandler class?
Http3UnidirectionalStreamInboundClientHandler is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3UnidirectionalStreamInboundClientHandler.java.
Where is Http3UnidirectionalStreamInboundClientHandler defined?
Http3UnidirectionalStreamInboundClientHandler is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3UnidirectionalStreamInboundClientHandler.java at line 27.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free