Http2StreamChannelConfig Class — netty Architecture
Architecture documentation for the Http2StreamChannelConfig class in AbstractHttp2StreamChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD ec726ae3_04b2_4a4d_cded_16e4166256ed["Http2StreamChannelConfig"] 53b73d84_de3f_a5ff_9f0d_ff98834dbbb4["AbstractHttp2StreamChannel.java"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|defined in| 53b73d84_de3f_a5ff_9f0d_ff98834dbbb4 05c992ca_9a57_4a86_b7a9_cbccfc494f15["Http2StreamChannelConfig()"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|method| 05c992ca_9a57_4a86_b7a9_cbccfc494f15 21a56d30_c450_aeb1_28e9_7a28c6922967["MessageSizeEstimator()"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|method| 21a56d30_c450_aeb1_28e9_7a28c6922967 fb296a26_f998_a480_57db_2b706912d786["ChannelConfig()"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|method| fb296a26_f998_a480_57db_2b706912d786 679fa3b0_2c15_4edd_fc50_4c445e33cdf1["getOptions()"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|method| 679fa3b0_2c15_4edd_fc50_4c445e33cdf1 46f498ce_0941_1826_7051_85c2793588cd["T()"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|method| 46f498ce_0941_1826_7051_85c2793588cd 858ecbbc_23c8_402a_e077_28f8ef14ee8b["setOption()"] ec726ae3_04b2_4a4d_cded_16e4166256ed -->|method| 858ecbbc_23c8_402a_e077_28f8ef14ee8b
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java lines 1198–1267
private static final class Http2StreamChannelConfig extends DefaultChannelConfig {
volatile boolean autoStreamFlowControl = true;
Http2StreamChannelConfig(Channel channel) {
super(channel);
}
@Override
public MessageSizeEstimator getMessageSizeEstimator() {
return FlowControlledFrameSizeEstimator.INSTANCE;
}
@Override
public ChannelConfig setMessageSizeEstimator(MessageSizeEstimator estimator) {
throw new UnsupportedOperationException();
}
@Override
public ChannelConfig setRecvByteBufAllocator(RecvByteBufAllocator allocator) {
if (!(allocator.newHandle() instanceof RecvByteBufAllocator.ExtendedHandle)) {
throw new IllegalArgumentException("allocator.newHandle() must return an object of type: " +
RecvByteBufAllocator.ExtendedHandle.class);
}
super.setRecvByteBufAllocator(allocator);
return this;
}
@Override
public Map<ChannelOption<?>, Object> getOptions() {
return getOptions(
super.getOptions(),
Http2StreamChannelOption.AUTO_STREAM_FLOW_CONTROL);
}
@SuppressWarnings("unchecked")
@Override
public <T> T getOption(ChannelOption<T> option) {
if (option == Http2StreamChannelOption.AUTO_STREAM_FLOW_CONTROL) {
return (T) Boolean.valueOf(autoStreamFlowControl);
}
return super.getOption(option);
}
@Override
public <T> boolean setOption(ChannelOption<T> option, T value) {
validate(option, value);
if (option == Http2StreamChannelOption.AUTO_STREAM_FLOW_CONTROL) {
boolean newValue = (Boolean) value;
boolean changed = newValue && !autoStreamFlowControl;
autoStreamFlowControl = (Boolean) value;
if (changed) {
if (channel.isRegistered()) {
final Http2ChannelUnsafe unsafe = (Http2ChannelUnsafe) channel.unsafe();
if (channel.eventLoop().inEventLoop()) {
unsafe.updateLocalWindowIfNeededAndFlush();
} else {
channel.eventLoop().execute(new Runnable() {
@Override
public void run() {
unsafe.updateLocalWindowIfNeededAndFlush();
}
});
}
}
}
return true;
}
return super.setOption(option, value);
}
}
Source
Frequently Asked Questions
What is the Http2StreamChannelConfig class?
Http2StreamChannelConfig is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java.
Where is Http2StreamChannelConfig defined?
Http2StreamChannelConfig is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java at line 1198.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free