Home / Class/ QuicheConfig Class — netty Architecture

QuicheConfig Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  20602212_d8a2_c6eb_1440_4d1201ef959f["QuicheConfig"]
  53dd11ea_7bd4_6d66_a7b9_9b5e7be60586["QuicheConfig.java"]
  20602212_d8a2_c6eb_1440_4d1201ef959f -->|defined in| 53dd11ea_7bd4_6d66_a7b9_9b5e7be60586
  2b7c1dde_07d0_caca_ea74_7d7622ec415a["QuicheConfig()"]
  20602212_d8a2_c6eb_1440_4d1201ef959f -->|method| 2b7c1dde_07d0_caca_ea74_7d7622ec415a
  de901e04_0040_8472_69d8_be61b438af1a["isDatagramSupported()"]
  20602212_d8a2_c6eb_1440_4d1201ef959f -->|method| de901e04_0040_8472_69d8_be61b438af1a
  c48cb99c_89c4_eb18_7609_b0200ca8d45a["nativeAddress()"]
  20602212_d8a2_c6eb_1440_4d1201ef959f -->|method| c48cb99c_89c4_eb18_7609_b0200ca8d45a
  e9c0461a_75ed_77c8_eea9_2a14e16b7561["finalize()"]
  20602212_d8a2_c6eb_1440_4d1201ef959f -->|method| e9c0461a_75ed_77c8_eea9_2a14e16b7561
  a8c0be1a_904b_3571_5130_2caab73ea814["free()"]
  20602212_d8a2_c6eb_1440_4d1201ef959f -->|method| a8c0be1a_904b_3571_5130_2caab73ea814

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheConfig.java lines 20–159

final class QuicheConfig {
    private final boolean isDatagramSupported;
    private long config = -1;

    QuicheConfig(int version,
                 @Nullable Boolean grease,
                 @Nullable Long maxIdleTimeout,
                 @Nullable Long maxSendUdpPayloadSize,
                 @Nullable Long maxRecvUdpPayloadSize,
                 @Nullable Long initialMaxData,
                 @Nullable Long initialMaxStreamDataBidiLocal,
                 @Nullable Long initialMaxStreamDataBidiRemote,
                 @Nullable Long initialMaxStreamDataUni,
                 @Nullable Long initialMaxStreamsBidi,
                 @Nullable Long initialMaxStreamsUni,
                 @Nullable Long ackDelayExponent,
                 @Nullable Long maxAckDelay,
                 @Nullable Boolean disableActiveMigration,
                 @Nullable Boolean enableHystart,
                 @Nullable Boolean discoverPmtu,
                 @Nullable QuicCongestionControlAlgorithm congestionControlAlgorithm,
                 @Nullable Integer initialCongestionWindowPackets,
                 @Nullable Integer recvQueueLen,
                 @Nullable Integer sendQueueLen,
                 @Nullable Long activeConnectionIdLimit,
                 byte @Nullable [] statelessResetToken) {
        long config = Quiche.quiche_config_new(version);
        try {
            if (grease != null) {
                Quiche.quiche_config_grease(config, grease);
            }
            if (maxIdleTimeout != null) {
                Quiche.quiche_config_set_max_idle_timeout(config, maxIdleTimeout);
            }
            if (maxSendUdpPayloadSize != null) {
                Quiche.quiche_config_set_max_send_udp_payload_size(config, maxSendUdpPayloadSize);
            }
            if (maxRecvUdpPayloadSize != null) {
                Quiche.quiche_config_set_max_recv_udp_payload_size(config, maxRecvUdpPayloadSize);
            }
            if (initialMaxData != null) {
                Quiche.quiche_config_set_initial_max_data(config, initialMaxData);
            }
            if (initialMaxStreamDataBidiLocal != null) {
                Quiche.quiche_config_set_initial_max_stream_data_bidi_local(config, initialMaxStreamDataBidiLocal);
            }
            if (initialMaxStreamDataBidiRemote != null) {
                Quiche.quiche_config_set_initial_max_stream_data_bidi_remote(config, initialMaxStreamDataBidiRemote);
            }
            if (initialMaxStreamDataUni != null) {
                Quiche.quiche_config_set_initial_max_stream_data_uni(config, initialMaxStreamDataUni);
            }
            if (initialMaxStreamsBidi != null) {
                Quiche.quiche_config_set_initial_max_streams_bidi(config, initialMaxStreamsBidi);
            }
            if (initialMaxStreamsUni != null) {
                Quiche.quiche_config_set_initial_max_streams_uni(config, initialMaxStreamsUni);
            }
            if (ackDelayExponent != null) {
                Quiche.quiche_config_set_ack_delay_exponent(config, ackDelayExponent);
            }
            if (maxAckDelay != null) {
                Quiche.quiche_config_set_max_ack_delay(config, maxAckDelay);
            }
            if (disableActiveMigration != null) {
                Quiche.quiche_config_set_disable_active_migration(config, disableActiveMigration);
            }
            if (enableHystart != null) {
                Quiche.quiche_config_enable_hystart(config, enableHystart);
            }
            if (discoverPmtu != null) {
                Quiche.quiche_config_discover_pmtu(config, discoverPmtu);
            }
            if (congestionControlAlgorithm != null) {
                switch (congestionControlAlgorithm) {
                    case RENO:
                        Quiche.quiche_config_set_cc_algorithm(config, Quiche.QUICHE_CC_RENO);
                        break;
                    case CUBIC:
                        Quiche.quiche_config_set_cc_algorithm(config, Quiche.QUICHE_CC_CUBIC);
                        break;

Frequently Asked Questions

What is the QuicheConfig class?
QuicheConfig is a class in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheConfig.java.
Where is QuicheConfig defined?
QuicheConfig is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheConfig.java at line 20.

Analyze Your Own Codebase

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

Try Supermodel Free