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