Home / Function/ deregister() — netty Function Reference

deregister() — netty Function Reference

Architecture documentation for the deregister() function in QuicheQuicStreamChannel.java from the netty codebase.

Function java Buffer Allocators calls 2 called by 1

Entity Profile

Dependency Diagram

graph TD
  9480cb89_9c96_28a9_4217_4c121000c348["deregister()"]
  77188bb7_e7ad_de01_3b54_5bc50b9e2df1["QuicStreamChannelUnsafe"]
  9480cb89_9c96_28a9_4217_4c121000c348 -->|defined in| 77188bb7_e7ad_de01_3b54_5bc50b9e2df1
  1123715f_0f63_323f_9bab_77f6d3c50fff["close()"]
  1123715f_0f63_323f_9bab_77f6d3c50fff -->|calls| 9480cb89_9c96_28a9_4217_4c121000c348
  dcc85143_930d_6847_5c1d_18334644fce5["invokeLater()"]
  9480cb89_9c96_28a9_4217_4c121000c348 -->|calls| dcc85143_930d_6847_5c1d_18334644fce5
  1123715f_0f63_323f_9bab_77f6d3c50fff["close()"]
  9480cb89_9c96_28a9_4217_4c121000c348 -->|calls| 1123715f_0f63_323f_9bab_77f6d3c50fff
  style 9480cb89_9c96_28a9_4217_4c121000c348 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java lines 582–616

        private void deregister(final ChannelPromise promise, final boolean fireChannelInactive) {
            assert eventLoop().inEventLoop();
            if (!promise.setUncancellable()) {
                return;
            }

            if (!registered) {
                promise.trySuccess();
                return;
            }

            // As a user may call deregister() from within any method while doing processing in the ChannelPipeline,
            // we need to ensure we do the actual deregister operation later. This is needed as for example,
            // we may be in the ByteToMessageDecoder.callDecode(...) method and so still try to do processing in
            // the old EventLoop while the user already registered the Channel to a new EventLoop. Without delay,
            // the deregister operation this could lead to have a handler invoked by different EventLoop and so
            // threads.
            //
            // See:
            // https://github.com/netty/netty/issues/4435
            invokeLater(() -> {
                if (fireChannelInactive) {
                    pipeline.fireChannelInactive();
                }
                // Some transports like local and AIO does not allow the deregistration of
                // an open channel.  Their doDeregister() calls close(). Consequently,
                // close() calls deregister() again - no need to fire channelUnregistered, so check
                // if it was registered.
                if (registered) {
                    registered = false;
                    pipeline.fireChannelUnregistered();
                }
                promise.setSuccess();
            });
        }

Domain

Subdomains

Called By

Frequently Asked Questions

What does deregister() do?
deregister() is a function in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java.
Where is deregister() defined?
deregister() is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java at line 582.
What does deregister() call?
deregister() calls 2 function(s): close, invokeLater.
What calls deregister()?
deregister() is called by 1 function(s): close.

Analyze Your Own Codebase

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

Try Supermodel Free