Http3ClientConnectionHandler Class — netty Architecture
Architecture documentation for the Http3ClientConnectionHandler class in Http3ClientConnectionHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD fa8f1428_8c2f_92ed_bb2d_ae12f2030372["Http3ClientConnectionHandler"] fc54b01a_2a0c_0111_b050_d1706ae4bd03["Http3ClientConnectionHandler.java"] fa8f1428_8c2f_92ed_bb2d_ae12f2030372 -->|defined in| fc54b01a_2a0c_0111_b050_d1706ae4bd03 364059bf_3005_103c_baf5_5b257b23041a["Http3ClientConnectionHandler()"] fa8f1428_8c2f_92ed_bb2d_ae12f2030372 -->|method| 364059bf_3005_103c_baf5_5b257b23041a 9da353d9_7817_4542_e68c_86945bb571ed["initBidirectionalStream()"] fa8f1428_8c2f_92ed_bb2d_ae12f2030372 -->|method| 9da353d9_7817_4542_e68c_86945bb571ed c27eb872_9cb2_0128_76c2_0cd053417146["initUnidirectionalStream()"] fa8f1428_8c2f_92ed_bb2d_ae12f2030372 -->|method| c27eb872_9cb2_0128_76c2_0cd053417146
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ClientConnectionHandler.java lines 25–108
public final class Http3ClientConnectionHandler extends Http3ConnectionHandler {
private final LongFunction<ChannelHandler> pushStreamHandlerFactory;
/**
* Create a new instance.
*/
public Http3ClientConnectionHandler() {
this(null, null, null, null, true);
}
/**
* Create a new instance.
*
* @param inboundControlStreamHandler the {@link ChannelHandler} which will be notified about
* {@link Http3RequestStreamFrame}s or {@code null} if the user is not
* interested in these.
* @param pushStreamHandlerFactory the {@link LongFunction} that will provide a custom
* {@link ChannelHandler} for push streams {@code null} if no special
* handling should be done. When present, push ID will be passed as an
* argument to the {@link LongFunction}.
* @param unknownInboundStreamHandlerFactory the {@link LongFunction} that will provide a custom
* {@link ChannelHandler} for unknown inbound stream types or
* {@code null} if no special handling should be done.
* @param localSettings the local {@link Http3SettingsFrame} that should be sent to the
* remote peer or {@code null} if the default settings should be used.
* @param disableQpackDynamicTable If QPACK dynamic table should be disabled.
*/
public Http3ClientConnectionHandler(@Nullable ChannelHandler inboundControlStreamHandler,
@Nullable LongFunction<ChannelHandler> pushStreamHandlerFactory,
@Nullable LongFunction<ChannelHandler> unknownInboundStreamHandlerFactory,
@Nullable Http3SettingsFrame localSettings, boolean disableQpackDynamicTable) {
this(inboundControlStreamHandler, pushStreamHandlerFactory, unknownInboundStreamHandlerFactory, localSettings,
disableQpackDynamicTable, null);
}
/**
* Create a new instance.
*
* @param inboundControlStreamHandler the {@link ChannelHandler} which will be notified about
* {@link Http3RequestStreamFrame}s or {@code null} if the user is not
* interested in these.
* @param pushStreamHandlerFactory the {@link LongFunction} that will provide a custom
* {@link ChannelHandler} for push streams {@code null} if no special
* handling should be done. When present, push ID will be passed as an
* argument to the {@link LongFunction}.
* @param unknownInboundStreamHandlerFactory the {@link LongFunction} that will provide a custom
* {@link ChannelHandler} for unknown inbound stream types or
* {@code null} if no special handling should be done.
* @param localSettings the local {@link Http3SettingsFrame} that should be sent to the
* remote peer or {@code null} if the default settings should be used.
* @param disableQpackDynamicTable If QPACK dynamic table should be disabled.
* @param nonStandardSettingsValidator the {@link Http3Settings.NonStandardHttp3SettingsValidator} to use
* when validating settings that are non-standard.
*/
public Http3ClientConnectionHandler(@Nullable ChannelHandler inboundControlStreamHandler,
@Nullable LongFunction<ChannelHandler> pushStreamHandlerFactory,
@Nullable LongFunction<ChannelHandler> unknownInboundStreamHandlerFactory,
@Nullable Http3SettingsFrame localSettings, boolean disableQpackDynamicTable,
@Nullable Http3Settings.NonStandardHttp3SettingsValidator
nonStandardSettingsValidator) {
super(false, inboundControlStreamHandler, unknownInboundStreamHandlerFactory, localSettings,
disableQpackDynamicTable, nonStandardSettingsValidator);
this.pushStreamHandlerFactory = pushStreamHandlerFactory;
}
@Override
void initBidirectionalStream(ChannelHandlerContext ctx, QuicStreamChannel channel) {
// See https://tools.ietf.org/html/draft-ietf-quic-http-32#section-6.1
Http3CodecUtils.connectionError(ctx, Http3ErrorCode.H3_STREAM_CREATION_ERROR,
"Server initiated bidirectional streams are not allowed", true);
}
@Override
void initUnidirectionalStream(ChannelHandlerContext ctx, QuicStreamChannel streamChannel) {
final long maxTableCapacity = maxTableCapacity();
streamChannel.pipeline().addLast(
new Http3UnidirectionalStreamInboundClientHandler(codecFactory, nonStandardSettingsValidator,
localControlStreamHandler, remoteControlStreamHandler,
unknownInboundStreamHandlerFactory, pushStreamHandlerFactory,
() -> new QpackEncoderHandler(maxTableCapacity, qpackDecoder),
Source
Frequently Asked Questions
What is the Http3ClientConnectionHandler class?
Http3ClientConnectionHandler is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ClientConnectionHandler.java.
Where is Http3ClientConnectionHandler defined?
Http3ClientConnectionHandler is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3ClientConnectionHandler.java at line 25.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free