QuicheQuicStreamChannelConfig Class — netty Architecture
Architecture documentation for the QuicheQuicStreamChannelConfig class in QuicheQuicStreamChannelConfig.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 84100e5c_329b_9e5d_4996_2bc36acd5eb1["QuicheQuicStreamChannelConfig"] eb3345d4_d7e5_9f31_269b_210adcbaf978["QuicheQuicStreamChannelConfig.java"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|defined in| eb3345d4_d7e5_9f31_269b_210adcbaf978 e13512bf_4d72_1ca9_ead1_21d63176d2d6["QuicheQuicStreamChannelConfig()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| e13512bf_4d72_1ca9_ead1_21d63176d2d6 2a48a2ef_a22b_fd18_e05d_5311c2838706["getOptions()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| 2a48a2ef_a22b_fd18_e05d_5311c2838706 5e09c78b_f10f_75d9_603e_5a5a33de8a4b["T()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| 5e09c78b_f10f_75d9_603e_5a5a33de8a4b bb088f9c_c854_fc28_d2b5_3352fb46c28a["setOption()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| bb088f9c_c854_fc28_d2b5_3352fb46c28a 75382251_a303_4e97_e0d1_eaca7284757d["QuicStreamChannelConfig()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| 75382251_a303_4e97_e0d1_eaca7284757d 0af06427_1a50_cea8_cf9e_b4ad4aa49f86["isReadFrames()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| 0af06427_1a50_cea8_cf9e_b4ad4aa49f86 f9399203_7935_6401_e9d5_27e30bee3c8e["ByteBufAllocator()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| f9399203_7935_6401_e9d5_27e30bee3c8e d608fa6f_372f_dee3_baa7_868424a9029a["isAllowHalfClosure()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| d608fa6f_372f_dee3_baa7_868424a9029a 3f50b7c6_a754_a118_3801_95c700dcd204["isHalfClosureSupported()"] 84100e5c_329b_9e5d_4996_2bc36acd5eb1 -->|method| 3f50b7c6_a754_a118_3801_95c700dcd204
Relationship Graph
Source Code
codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannelConfig.java lines 27–175
final class QuicheQuicStreamChannelConfig extends DefaultChannelConfig implements QuicStreamChannelConfig {
// We should use half-closure sementatics by default as this is what QUIC does by default.
// If you receive a FIN you should still keep the stream open until you write a FIN as well.
private volatile boolean allowHalfClosure = true;
private volatile boolean readFrames;
volatile DirectIoByteBufAllocator allocator;
QuicheQuicStreamChannelConfig(QuicStreamChannel channel) {
super(channel);
allocator = new DirectIoByteBufAllocator(super.getAllocator());
}
@Override
public Map<ChannelOption<?>, Object> getOptions() {
if (isHalfClosureSupported()) {
return getOptions(super.getOptions(), ChannelOption.ALLOW_HALF_CLOSURE, QuicChannelOption.READ_FRAMES);
}
return super.getOptions();
}
@SuppressWarnings("unchecked")
@Override
public <T> T getOption(ChannelOption<T> option) {
if (option == ChannelOption.ALLOW_HALF_CLOSURE) {
return (T) Boolean.valueOf(isAllowHalfClosure());
}
if (option == QuicChannelOption.READ_FRAMES) {
return (T) Boolean.valueOf(isReadFrames());
}
return super.getOption(option);
}
@Override
public <T> boolean setOption(ChannelOption<T> option, T value) {
validate(option, value);
if (option == ChannelOption.ALLOW_HALF_CLOSURE) {
if (isHalfClosureSupported()) {
setAllowHalfClosure((Boolean) value);
return true;
}
return false;
}
if (option == QuicChannelOption.READ_FRAMES) {
setReadFrames((Boolean) value);
}
return super.setOption(option, value);
}
@Override
public QuicStreamChannelConfig setReadFrames(boolean readFrames) {
this.readFrames = readFrames;
return this;
}
@Override
public boolean isReadFrames() {
return readFrames;
}
@Override
public QuicStreamChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis) {
super.setConnectTimeoutMillis(connectTimeoutMillis);
return this;
}
@Override
public QuicStreamChannelConfig setMaxMessagesPerRead(int maxMessagesPerRead) {
super.setMaxMessagesPerRead(maxMessagesPerRead);
return this;
}
@Override
public QuicStreamChannelConfig setWriteSpinCount(int writeSpinCount) {
super.setWriteSpinCount(writeSpinCount);
return this;
}
@Override
public QuicStreamChannelConfig setAllocator(ByteBufAllocator allocator) {
this.allocator = new DirectIoByteBufAllocator(allocator);
Defined In
Source
Frequently Asked Questions
What is the QuicheQuicStreamChannelConfig class?
QuicheQuicStreamChannelConfig is a class in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannelConfig.java.
Where is QuicheQuicStreamChannelConfig defined?
QuicheQuicStreamChannelConfig is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannelConfig.java at line 27.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free