drain() — netty Function Reference
Architecture documentation for the drain() function in Http3FrameCodec.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 5fe8b6a4_8a83_021e_73f5_eec914124c9b["drain()"] 95db0354_1de2_6bba_62f7_7920b9ac9012["WriteResumptionListener"] 5fe8b6a4_8a83_021e_73f5_eec914124c9b -->|defined in| 95db0354_1de2_6bba_62f7_7920b9ac9012 f7f031b7_1830_ea2e_79b9_cbe1e41535f4["channelInactive()"] f7f031b7_1830_ea2e_79b9_cbe1e41535f4 -->|calls| 5fe8b6a4_8a83_021e_73f5_eec914124c9b 8e959716_4283_14c4_3615_74bd8ff69a7b["handlerRemoved0()"] 8e959716_4283_14c4_3615_74bd8ff69a7b -->|calls| 5fe8b6a4_8a83_021e_73f5_eec914124c9b 4433feb1_9179_606e_bfc6_7cb187b0948d["operationComplete()"] 4433feb1_9179_606e_bfc6_7cb187b0948d -->|calls| 5fe8b6a4_8a83_021e_73f5_eec914124c9b 8956333e_1f8a_a4ec_390f_4f648d6508a4["write0()"] 5fe8b6a4_8a83_021e_73f5_eec914124c9b -->|calls| 8956333e_1f8a_a4ec_390f_4f648d6508a4 ac60c66b_2422_a705_0b0b_19d8b2457352["flush()"] 5fe8b6a4_8a83_021e_73f5_eec914124c9b -->|calls| ac60c66b_2422_a705_0b0b_19d8b2457352 style 5fe8b6a4_8a83_021e_73f5_eec914124c9b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java lines 770–795
void drain() {
assert ctx.channel().eventLoop().inEventLoop();
boolean flushSeen = false;
try {
for (;;) {
Object entry = queue.current();
if (entry == null) {
break;
}
if (entry == FLUSH) {
flushSeen = true;
queue.remove().trySuccess();
} else {
// Retain the entry as remove() will call release() as well.
codec.write0(ctx, ReferenceCountUtil.retain(entry), queue.remove());
}
}
// indicate that writes do not need to be enqueued. As we are on the eventloop, no other writes can
// happen while we are draining, hence we would not write out of order.
codec.writeResumptionListener = null;
} finally {
if (flushSeen) {
codec.flush(ctx);
}
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does drain() do?
drain() is a function in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java.
Where is drain() defined?
drain() is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java at line 770.
What does drain() call?
drain() calls 2 function(s): flush, write0.
What calls drain()?
drain() is called by 3 function(s): channelInactive, handlerRemoved0, operationComplete.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free