ReadResumptionListener Class — netty Architecture
Architecture documentation for the ReadResumptionListener class in Http3FrameCodec.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 2248914c_cfca_0e01_f610_307d55182207["ReadResumptionListener"] 50e04e81_eb2c_8eef_5e05_95116fe8e65f["Http3FrameCodec.java"] 2248914c_cfca_0e01_f610_307d55182207 -->|defined in| 50e04e81_eb2c_8eef_5e05_95116fe8e65f 13cdb0c0_b6b5_f0e7_646c_0bd7f715a1e4["ReadResumptionListener()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| 13cdb0c0_b6b5_f0e7_646c_0bd7f715a1e4 a494429d_99b3_b9af_835d_5ed99ff53bf4["suspended()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| a494429d_99b3_b9af_835d_5ed99ff53bf4 84c0aa73_08b8_9f37_baf7_cad995c3c8e3["readCompleted()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| 84c0aa73_08b8_9f37_baf7_cad995c3c8e3 bf6a269e_242a_db84_cd3a_85582cef9b57["readRequested()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| bf6a269e_242a_db84_cd3a_85582cef9b57 c751e13f_6797_7f70_b084_d0fd5fbd468f["isSuspended()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| c751e13f_6797_7f70_b084_d0fd5fbd468f 6c431423_5862_114e_ae38_4efbbb53a2ef["operationComplete()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| 6c431423_5862_114e_ae38_4efbbb53a2ef 94361bfc_917a_a19d_075f_c428f5eb421e["run()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| 94361bfc_917a_a19d_075f_c428f5eb421e bc889d75_7258_5336_e80d_f4e24471b1ac["resume()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| bc889d75_7258_5336_e80d_f4e24471b1ac 6e1a101a_f7ee_1213_970e_5639c659e0c2["setState()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| 6e1a101a_f7ee_1213_970e_5639c659e0c2 d58a8d53_dc7f_23c0_786a_622145d546c1["hasState()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| d58a8d53_dc7f_23c0_786a_622145d546c1 dd8418fa_a2ac_642f_3bcd_5b0e0bde92b3["unsetState()"] 2248914c_cfca_0e01_f610_307d55182207 -->|method| dd8418fa_a2ac_642f_3bcd_5b0e0bde92b3
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java lines 652–738
private static final class ReadResumptionListener
implements Runnable, GenericFutureListener<Future<? super QuicStreamChannel>> {
private static final int STATE_SUSPENDED = 0b1000_0000;
private static final int STATE_READ_PENDING = 0b0100_0000;
private static final int STATE_READ_COMPLETE_PENDING = 0b0010_0000;
private final ChannelHandlerContext ctx;
private final Http3FrameCodec codec;
private byte state;
ReadResumptionListener(ChannelHandlerContext ctx, Http3FrameCodec codec) {
this.ctx = ctx;
this.codec = codec;
assert codec.qpackAttributes != null;
if (!codec.qpackAttributes.dynamicTableDisabled() && !codec.qpackAttributes.decoderStreamAvailable()) {
codec.qpackAttributes.whenDecoderStreamAvailable(this);
}
}
void suspended() {
assert !codec.qpackAttributes.dynamicTableDisabled();
setState(STATE_SUSPENDED);
}
boolean readCompleted() {
if (hasState(STATE_SUSPENDED)) {
setState(STATE_READ_COMPLETE_PENDING);
return false;
}
return true;
}
boolean readRequested() {
if (hasState(STATE_SUSPENDED)) {
setState(STATE_READ_PENDING);
return false;
}
return true;
}
boolean isSuspended() {
return hasState(STATE_SUSPENDED);
}
@Override
public void operationComplete(Future<? super QuicStreamChannel> future) {
if (future.isSuccess()) {
resume();
} else {
ctx.fireExceptionCaught(future.cause());
}
}
@Override
public void run() {
resume();
}
private void resume() {
unsetState(STATE_SUSPENDED);
try {
codec.channelRead(ctx, Unpooled.EMPTY_BUFFER);
if (hasState(STATE_READ_COMPLETE_PENDING)) {
unsetState(STATE_READ_COMPLETE_PENDING);
codec.channelReadComplete(ctx);
}
if (hasState(STATE_READ_PENDING)) {
unsetState(STATE_READ_PENDING);
codec.read(ctx);
}
} catch (Exception e) {
ctx.fireExceptionCaught(e);
}
}
private void setState(int toSet) {
state |= toSet;
}
private boolean hasState(int toCheck) {
return (state & toCheck) == toCheck;
Source
Frequently Asked Questions
What is the ReadResumptionListener class?
ReadResumptionListener is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java.
Where is ReadResumptionListener defined?
ReadResumptionListener is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java at line 652.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free