QuicheQuicChannel Class — netty Architecture
Architecture documentation for the QuicheQuicChannel class in QuicheQuicChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 3c534d05_bb5b_c991_5e03_7ec94e739cf7["QuicheQuicChannel"] e2af940f_f48c_60ab_e67f_c3708214d676["QuicheQuicChannel.java"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|defined in| e2af940f_f48c_60ab_e67f_c3708214d676 8fab4ac4_9bdb_f950_6bda_b507354eead4["QuicheQuicChannel()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 8fab4ac4_9bdb_f950_6bda_b507354eead4 91ad4e75_1871_05d1_0e83_42ab72e107e6["growIfNeeded()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 91ad4e75_1871_05d1_0e83_42ab72e107e6 06c11b43_b6ba_8483_0d22_78982d8c399e["isTimedOut()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 06c11b43_b6ba_8483_0d22_78982d8c399e 259d9397_51bc_df50_097f_60d3e0d7868d["SSLEngine()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 259d9397_51bc_df50_097f_60d3e0d7868d 964a3852_b3e7_b070_9305_753cc91a1758["notifyAboutHandshakeCompletionIfNeeded()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 964a3852_b3e7_b070_9305_753cc91a1758 b835dd21_64f7_7df8_433d_e629b47af47b["peerAllowedStreams()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| b835dd21_64f7_7df8_433d_e629b47af47b f6e857b5_5d30_f085_30c4_531d4e875782["attachQuicheConnection()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| f6e857b5_5d30_f085_30c4_531d4e875782 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4["connectNow()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4 7e530031_1fc0_9db2_5da3_39f49817a6b6["failConnectPromiseAndThrow()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 7e530031_1fc0_9db2_5da3_39f49817a6b6 ae06f64f_455f_edc7_057f_27f8e23a5b93["tryFailConnectPromise()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| ae06f64f_455f_edc7_057f_27f8e23a5b93 65547654_2a3e_d0aa_c2b9_0bfdf8072601["sourceConnectionIds()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 65547654_2a3e_d0aa_c2b9_0bfdf8072601 ec499388_a0a7_df58_56e7_70e8dacefe0f["markInFireChannelReadCompleteQueue()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| ec499388_a0a7_df58_56e7_70e8dacefe0f 71f869b5_f8a3_eeab_e61b_37fed86049e3["failPendingConnectPromise()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7 -->|method| 71f869b5_f8a3_eeab_e61b_37fed86049e3
Relationship Graph
Source Code
codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java lines 77–2129
final class QuicheQuicChannel extends AbstractChannel implements QuicChannel {
private static final InternalLogger logger = InternalLoggerFactory.getInstance(QuicheQuicChannel.class);
private static final String QLOG_FILE_EXTENSION = ".qlog";
enum StreamRecvResult {
/**
* Nothing more to read from the stream.
*/
DONE,
/**
* FIN flag received.
*/
FIN,
/**
* Normal read without FIN flag.
*/
OK
}
private enum ChannelState {
OPEN,
ACTIVE,
CLOSED
}
private enum SendResult {
SOME,
NONE,
CLOSE
}
private static final class CloseData implements ChannelFutureListener {
final boolean applicationClose;
final int err;
final ByteBuf reason;
CloseData(boolean applicationClose, int err, ByteBuf reason) {
this.applicationClose = applicationClose;
this.err = err;
this.reason = reason;
}
@Override
public void operationComplete(ChannelFuture future) {
reason.release();
}
}
private static final ChannelMetadata METADATA = new ChannelMetadata(false, 16);
private long[] readableStreams = new long[4];
private long[] writableStreams = new long[4];
private final LongObjectMap<QuicheQuicStreamChannel> streams = new LongObjectHashMap<>();
private final QuicheQuicChannelConfig config;
private final boolean server;
private final QuicStreamIdGenerator idGenerator;
private final ChannelHandler streamHandler;
private final Map.Entry<ChannelOption<?>, Object>[] streamOptionsArray;
private final Map.Entry<AttributeKey<?>, Object>[] streamAttrsArray;
private final TimeoutHandler timeoutHandler;
private final QuicConnectionIdGenerator connectionIdAddressGenerator;
private final QuicResetTokenGenerator resetTokenGenerator;
private final Set<ByteBuffer> sourceConnectionIds = new HashSet<>();
private Consumer<QuicheQuicChannel> freeTask;
private Executor sslTaskExecutor;
private boolean inFireChannelReadCompleteQueue;
private boolean fireChannelReadCompletePending;
private ByteBuf finBuffer;
private ByteBuf outErrorCodeBuffer;
private ChannelPromise connectPromise;
private ScheduledFuture<?> connectTimeoutFuture;
private QuicConnectionAddress connectAddress;
private CloseData closeData;
private QuicConnectionCloseEvent connectionCloseEvent;
private QuicConnectionStats statsAtClose;
private boolean supportsDatagram;
private boolean recvDatagramPending;
private boolean datagramReadable;
private boolean recvStreamPending;
private boolean streamReadable;
private boolean handshakeCompletionNotified;
Source
Frequently Asked Questions
What is the QuicheQuicChannel class?
QuicheQuicChannel is a class in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java.
Where is QuicheQuicChannel defined?
QuicheQuicChannel is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java at line 77.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free