Home / Class/ ClosingChannelFutureListener Class — netty Architecture

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);
            }
        }
    }

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