Home / Class/ Http2ChannelUnsafe Class — netty Architecture

Http2ChannelUnsafe Class — netty Architecture

Architecture documentation for the Http2ChannelUnsafe class in AbstractHttp2StreamChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05["Http2ChannelUnsafe"]
  53b73d84_de3f_a5ff_9f0d_ff98834dbbb4["AbstractHttp2StreamChannel.java"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|defined in| 53b73d84_de3f_a5ff_9f0d_ff98834dbbb4
  3fa6e5ee_00d3_a9e7_4e43_0cd936931029["connect()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 3fa6e5ee_00d3_a9e7_4e43_0cd936931029
  061edcf4_92d7_3247_2f08_9c8c996847ae["recvBufAllocHandle()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 061edcf4_92d7_3247_2f08_9c8c996847ae
  6e019f39_2442_8848_1140_b6561448e189["SocketAddress()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 6e019f39_2442_8848_1140_b6561448e189
  5e161669_dd38_6929_7a61_a0ebc4575793["register()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 5e161669_dd38_6929_7a61_a0ebc4575793
  cf64a4cf_dc1c_6f8f_292d_df6b190e54e1["bind()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| cf64a4cf_dc1c_6f8f_292d_df6b190e54e1
  4e96b604_607e_2027_3ab1_e03e1cedcbdd["disconnect()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 4e96b604_607e_2027_3ab1_e03e1cedcbdd
  215b8316_feb5_500b_88f8_49eff0eac336["close()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 215b8316_feb5_500b_88f8_49eff0eac336
  8a1829a9_4ff0_0fdc_6f6f_98fc1f844f84["closeForcibly()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 8a1829a9_4ff0_0fdc_6f6f_98fc1f844f84
  0c2d25a1_4b0f_f8bb_685e_513d76901377["deregister()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 0c2d25a1_4b0f_f8bb_685e_513d76901377
  392e63a7_22b4_b12e_e643_274bcc99a5bf["fireChannelInactiveAndDeregister()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 392e63a7_22b4_b12e_e643_274bcc99a5bf
  8c56fb74_b80c_02ad_25a4_65eb61eff7ea["safeSetSuccess()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 8c56fb74_b80c_02ad_25a4_65eb61eff7ea
  b44453f3_32d7_e262_679e_0dfc1635685a["invokeLater()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| b44453f3_32d7_e262_679e_0dfc1635685a
  3a18b33a_f9a8_0622_5d3c_59bf383e0e3a["beginRead()"]
  2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 3a18b33a_f9a8_0622_5d3c_59bf383e0e3a

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java lines 630–1191

    private final class Http2ChannelUnsafe implements Unsafe {
        private final VoidChannelPromise unsafeVoidPromise =
                new VoidChannelPromise(AbstractHttp2StreamChannel.this, false);
        @SuppressWarnings("deprecation")
        private RecvByteBufAllocator.Handle recvHandle;
        private boolean writeDoneAndNoFlush;
        private boolean closeInitiated;
        private boolean readEOS;

        private boolean receivedEndOfStream;
        private boolean sentEndOfStream;

        @Override
        public void connect(final SocketAddress remoteAddress,
                            SocketAddress localAddress, final ChannelPromise promise) {
            if (!promise.setUncancellable()) {
                return;
            }
            promise.setFailure(new UnsupportedOperationException());
        }

        @Override
        public RecvByteBufAllocator.Handle recvBufAllocHandle() {
            if (recvHandle == null) {
                recvHandle = config().getRecvByteBufAllocator().newHandle();
                recvHandle.reset(config());
            }
            return recvHandle;
        }

        @Override
        public SocketAddress localAddress() {
            return parent().unsafe().localAddress();
        }

        @Override
        public SocketAddress remoteAddress() {
            return parent().unsafe().remoteAddress();
        }

        @Override
        public void register(EventLoop eventLoop, ChannelPromise promise) {
            if (!promise.setUncancellable()) {
                return;
            }
            if (registered) {
                promise.setFailure(new UnsupportedOperationException("Re-register is not supported"));
                return;
            }

            registered = true;

            promise.setSuccess();

            pipeline().fireChannelRegistered();
            if (isActive()) {
                pipeline().fireChannelActive();
            }
        }

        @Override
        public void bind(SocketAddress localAddress, ChannelPromise promise) {
            if (!promise.setUncancellable()) {
                return;
            }
            promise.setFailure(new UnsupportedOperationException());
        }

        @Override
        public void disconnect(ChannelPromise promise) {
            close(promise);
        }

        @Override
        public void close(final ChannelPromise promise) {
            close(promise, null);
        }

        private void close(final ChannelPromise promise, Http2Error error) {
            if (!promise.setUncancellable()) {
                return;

Frequently Asked Questions

What is the Http2ChannelUnsafe class?
Http2ChannelUnsafe is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java.
Where is Http2ChannelUnsafe defined?
Http2ChannelUnsafe is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java at line 630.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free