QpackAttributes Class — netty Architecture
Architecture documentation for the QpackAttributes class in QpackAttributes.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD b0d470e0_b8f1_e9d9_e48f_1278fb4b284d["QpackAttributes"] 67955bcd_5000_8b05_ae86_302a711e72db["QpackAttributes.java"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|defined in| 67955bcd_5000_8b05_ae86_302a711e72db 5df08d8c_ebd5_fa11_28d0_e8ebc6dc7cf0["QpackAttributes()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 5df08d8c_ebd5_fa11_28d0_e8ebc6dc7cf0 9e8f5403_9fec_08c7_000b_aacd1013be16["dynamicTableDisabled()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 9e8f5403_9fec_08c7_000b_aacd1013be16 273cf42a_b473_94d3_7f77_a14b5c8cd419["decoderStreamAvailable()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 273cf42a_b473_94d3_7f77_a14b5c8cd419 c8c3d474_798d_12e0_671d_107be7d505ae["encoderStreamAvailable()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| c8c3d474_798d_12e0_671d_107be7d505ae 39d1732b_995b_f625_731d_e6cd42d39e4b["whenEncoderStreamAvailable()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 39d1732b_995b_f625_731d_e6cd42d39e4b 737eb1a2_c0db_50ee_7e4b_cadf7c74ce7e["whenDecoderStreamAvailable()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 737eb1a2_c0db_50ee_7e4b_cadf7c74ce7e 550aa47f_cf3e_3ee5_da84_7dcffeec0aba["QuicStreamChannel()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 550aa47f_cf3e_3ee5_da84_7dcffeec0aba e5c80d45_b610_643d_19cf_a480dd5c8db3["decoderStream()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| e5c80d45_b610_643d_19cf_a480dd5c8db3 0ed88fce_469a_9de6_8ca7_eec49c07f457["encoderStream()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 0ed88fce_469a_9de6_8ca7_eec49c07f457 6efde04d_9f9a_bc32_92af_b444202e6887["encoderStreamInactive()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 6efde04d_9f9a_bc32_92af_b444202e6887 296edc2d_4da9_9658_d644_ecd4eb520084["decoderStreamInactive()"] b0d470e0_b8f1_e9d9_e48f_1278fb4b284d -->|method| 296edc2d_4da9_9658_d644_ecd4eb520084
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/QpackAttributes.java lines 27–108
final class QpackAttributes {
private final QuicChannel channel;
private final boolean dynamicTableDisabled;
private final Promise<QuicStreamChannel> encoderStreamPromise;
private final Promise<QuicStreamChannel> decoderStreamPromise;
private QuicStreamChannel encoderStream;
private QuicStreamChannel decoderStream;
QpackAttributes(QuicChannel channel, boolean disableDynamicTable) {
this.channel = channel;
dynamicTableDisabled = disableDynamicTable;
encoderStreamPromise = dynamicTableDisabled ? null : channel.eventLoop().newPromise();
decoderStreamPromise = dynamicTableDisabled ? null : channel.eventLoop().newPromise();
}
boolean dynamicTableDisabled() {
return dynamicTableDisabled;
}
boolean decoderStreamAvailable() {
return !dynamicTableDisabled && decoderStream != null;
}
boolean encoderStreamAvailable() {
return !dynamicTableDisabled && encoderStream != null;
}
void whenEncoderStreamAvailable(GenericFutureListener<Future<? super QuicStreamChannel>> listener) {
assert !dynamicTableDisabled;
assert encoderStreamPromise != null;
encoderStreamPromise.addListener(listener);
}
void whenDecoderStreamAvailable(GenericFutureListener<Future<? super QuicStreamChannel>> listener) {
assert !dynamicTableDisabled;
assert decoderStreamPromise != null;
decoderStreamPromise.addListener(listener);
}
QuicStreamChannel decoderStream() {
assert decoderStreamAvailable();
return decoderStream;
}
QuicStreamChannel encoderStream() {
assert encoderStreamAvailable();
return encoderStream;
}
void decoderStream(QuicStreamChannel decoderStream) {
assert channel.eventLoop().inEventLoop();
assert !dynamicTableDisabled;
assert decoderStreamPromise != null;
assert this.decoderStream == null;
this.decoderStream = requireNonNull(decoderStream);
decoderStreamPromise.setSuccess(decoderStream);
}
void encoderStream(QuicStreamChannel encoderStream) {
assert channel.eventLoop().inEventLoop();
assert !dynamicTableDisabled;
assert encoderStreamPromise != null;
assert this.encoderStream == null;
this.encoderStream = requireNonNull(encoderStream);
encoderStreamPromise.setSuccess(encoderStream);
}
void encoderStreamInactive(Throwable cause) {
assert channel.eventLoop().inEventLoop();
assert !dynamicTableDisabled;
assert encoderStreamPromise != null;
encoderStreamPromise.tryFailure(cause);
}
void decoderStreamInactive(Throwable cause) {
assert channel.eventLoop().inEventLoop();
assert !dynamicTableDisabled;
assert decoderStreamPromise != null;
decoderStreamPromise.tryFailure(cause);
}
Source
Frequently Asked Questions
What is the QpackAttributes class?
QpackAttributes is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/QpackAttributes.java.
Where is QpackAttributes defined?
QpackAttributes is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/QpackAttributes.java at line 27.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free