ClosingChannelFutureListener Class — netty Architecture
Architecture documentation for the ClosingChannelFutureListener class in Http2ConnectionHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 17901c52_dc16_288a_d386_470ce06cce7e["ClosingChannelFutureListener"] 9c883019_01e3_e30b_1c79_24fbb727545e["Http2ConnectionHandler.java"] 17901c52_dc16_288a_d386_470ce06cce7e -->|defined in| 9c883019_01e3_e30b_1c79_24fbb727545e 6bbe1727_90d9_6694_d0c6_84855f70b394["ClosingChannelFutureListener()"] 17901c52_dc16_288a_d386_470ce06cce7e -->|method| 6bbe1727_90d9_6694_d0c6_84855f70b394 f04de241_cdc7_ec36_6253_6c13e215b0da["operationComplete()"] 17901c52_dc16_288a_d386_470ce06cce7e -->|method| f04de241_cdc7_ec36_6253_6c13e215b0da 60a1ffc0_2a6c_10ae_8455_5c9e7c6be857["doClose()"] 17901c52_dc16_288a_d386_470ce06cce7e -->|method| 60a1ffc0_2a6c_10ae_8455_5c9e7c6be857
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java lines 946–993
private static final class ClosingChannelFutureListener implements ChannelFutureListener {
private final ChannelHandlerContext ctx;
private final ChannelPromise promise;
private final Future<?> timeoutTask;
private boolean closed;
ClosingChannelFutureListener(ChannelHandlerContext ctx, ChannelPromise promise) {
this.ctx = ctx;
this.promise = promise;
timeoutTask = null;
}
ClosingChannelFutureListener(final ChannelHandlerContext ctx, final ChannelPromise promise,
long timeout, TimeUnit unit) {
this.ctx = ctx;
this.promise = promise;
timeoutTask = ctx.executor().schedule(new Runnable() {
@Override
public void run() {
doClose();
}
}, timeout, unit);
}
@Override
public void operationComplete(ChannelFuture sentGoAwayFuture) {
if (timeoutTask != null) {
timeoutTask.cancel(false);
}
doClose();
}
private void doClose() {
// We need to guard against multiple calls as the timeout may trigger close() first and then it will be
// triggered again because of operationComplete(...) is called.
if (closed) {
// This only happens if we also scheduled a timeout task.
assert timeoutTask != null;
return;
}
closed = true;
if (promise == null) {
ctx.close();
} else {
ctx.close(promise);
}
}
}
Source
Frequently Asked Questions
What is the ClosingChannelFutureListener class?
ClosingChannelFutureListener is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java.
Where is ClosingChannelFutureListener defined?
ClosingChannelFutureListener is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2ConnectionHandler.java at line 946.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free