Home / Class/ QuicStreamChannelUnsafe Class — netty Architecture

QuicStreamChannelUnsafe Class — netty Architecture

Architecture documentation for the QuicStreamChannelUnsafe class in QuicheQuicStreamChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1["QuicStreamChannelUnsafe"]
  39ad0588_a62e_d5d4_0789_23d511692643["QuicheQuicStreamChannel.java"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|defined in| 39ad0588_a62e_d5d4_0789_23d511692643
  c737b8e3_53f6_4cb2_52b5_046d5dcec890["connect()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| c737b8e3_53f6_4cb2_52b5_046d5dcec890
  3945de9a_84d0_4fbf_7e09_189541cf620c["recvBufAllocHandle()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 3945de9a_84d0_4fbf_7e09_189541cf620c
  9bc33d4b_5d66_7bf2_f543_c9d95ebda44b["SocketAddress()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 9bc33d4b_5d66_7bf2_f543_c9d95ebda44b
  479f37b8_4001_0713_441c_36144865a2e5["register()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 479f37b8_4001_0713_441c_36144865a2e5
  539f4e5a_dcce_aecf_a9f0_26d50fbf2a02["bind()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 539f4e5a_dcce_aecf_a9f0_26d50fbf2a02
  aa534f9b_aee4_4895_7889_dae77c626cfc["disconnect()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| aa534f9b_aee4_4895_7889_dae77c626cfc
  1123715f_0f63_323f_9bab_77f6d3c50fff["close()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 1123715f_0f63_323f_9bab_77f6d3c50fff
  9480cb89_9c96_28a9_4217_4c121000c348["deregister()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 9480cb89_9c96_28a9_4217_4c121000c348
  dcc85143_930d_6847_5c1d_18334644fce5["invokeLater()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| dcc85143_930d_6847_5c1d_18334644fce5
  d2a7518c_1c2a_4dcd_9d4e_7416917291cc["closeForcibly()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| d2a7518c_1c2a_4dcd_9d4e_7416917291cc
  71da0969_c1b1_b745_dcbf_503b04d1d4fe["beginRead()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 71da0969_c1b1_b745_dcbf_503b04d1d4fe
  02ba6530_dd1d_7e69_71f0_2ab5b91e6586["closeIfNeeded()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| 02ba6530_dd1d_7e69_71f0_2ab5b91e6586
  da5c2828_c8c5_6172_4f45_d61e57ed89ae["writeQueued()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1 -->|method| da5c2828_c8c5_6172_4f45_d61e57ed89ae

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java lines 464–1057

    final class QuicStreamChannelUnsafe implements Unsafe {

        @SuppressWarnings("deprecation")
        private RecvByteBufAllocator.Handle recvHandle;

        private final ChannelPromise voidPromise = new VoidChannelPromise(
                QuicheQuicStreamChannel.this, false);
        @Override
        public void connect(SocketAddress remote, SocketAddress local, ChannelPromise promise) {
            assert eventLoop().inEventLoop();
            promise.setFailure(new UnsupportedOperationException());
        }

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

        @Override
        public SocketAddress localAddress() {
            return address;
        }

        @Override
        public SocketAddress remoteAddress() {
            return address;
        }

        @Override
        public void register(EventLoop eventLoop, ChannelPromise promise) {
            assert eventLoop.inEventLoop();
            if (!promise.setUncancellable()) {
                return;
            }
            if (registered) {
                promise.setFailure(new IllegalStateException());
                return;
            }
            if (eventLoop != parent.eventLoop()) {
                promise.setFailure(new IllegalArgumentException());
                return;
            }
            registered = true;
            promise.setSuccess();
            pipeline.fireChannelRegistered();
            pipeline.fireChannelActive();
        }

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

        @Override
        public void disconnect(ChannelPromise promise) {
            assert eventLoop().inEventLoop();
            close(promise);
        }

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

        void close(@Nullable ClosedChannelException writeFailCause, ChannelPromise promise) {
            assert eventLoop().inEventLoop();
            if (!promise.setUncancellable()) {
                return;
            }
            if (!active || closePromise.isDone()) {
                if (promise.isVoid()) {
                    return;
                }

Frequently Asked Questions

What is the QuicStreamChannelUnsafe class?
QuicStreamChannelUnsafe is a class in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java.
Where is QuicStreamChannelUnsafe defined?
QuicStreamChannelUnsafe is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java at line 464.

Analyze Your Own Codebase

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

Try Supermodel Free