Home / Class/ QuicheQuicStreamChannelConfig Class — netty Architecture

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);

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