Home / Function/ register() — netty Function Reference

register() — netty Function Reference

Architecture documentation for the register() function in AbstractChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73["register()"]
  330d05c9_85ca_2e57_92f5_e996fb442b81["AbstractUnsafe"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|defined in| 330d05c9_85ca_2e57_92f5_e996fb442b81
  f8eefee7_95b2_a426_9c6e_d60d6c0a3f39["isRegistered()"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|calls| f8eefee7_95b2_a426_9c6e_d60d6c0a3f39
  429a05ba_230a_8cb2_68e5_1fcffeb6f368["isCompatible()"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|calls| 429a05ba_230a_8cb2_68e5_1fcffeb6f368
  3636c0b5_4718_d99f_6eb8_ab7c7fc1bcc7["register0()"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|calls| 3636c0b5_4718_d99f_6eb8_ab7c7fc1bcc7
  17397289_ac28_713d_e04b_8903499df5fd["closeForcibly()"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|calls| 17397289_ac28_713d_e04b_8903499df5fd
  4b71a6cb_9d50_676e_bce9_aabd595de051["setClosed()"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|calls| 4b71a6cb_9d50_676e_bce9_aabd595de051
  09594916_b369_0dde_fab6_d2f3c2bd81b1["safeSetFailure()"]
  7ac63885_60f4_64a0_2bb5_20c6a0c6de73 -->|calls| 09594916_b369_0dde_fab6_d2f3c2bd81b1
  style 7ac63885_60f4_64a0_2bb5_20c6a0c6de73 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport/src/main/java/io/netty/channel/AbstractChannel.java lines 323–364

        @Override
        public final void register(EventLoop eventLoop, final ChannelPromise promise) {
            ObjectUtil.checkNotNull(eventLoop, "eventLoop");
            if (isRegistered()) {
                promise.setFailure(new IllegalStateException("registered to an event loop already"));
                return;
            }
            if (!isCompatible(eventLoop)) {
                promise.setFailure(
                        new IllegalStateException("incompatible event loop type: " + eventLoop.getClass().getName()));
                return;
            }

            AbstractChannel.this.eventLoop = eventLoop;

            // Clear any cached executors from prior event loop registrations.
            AbstractChannelHandlerContext context = pipeline.tail;
            do {
                context.contextExecutor = null;
                context = context.prev;
            } while (context != null);

            if (eventLoop.inEventLoop()) {
                register0(promise);
            } else {
                try {
                    eventLoop.execute(new Runnable() {
                        @Override
                        public void run() {
                            register0(promise);
                        }
                    });
                } catch (Throwable t) {
                    logger.warn(
                            "Force-closing a channel whose registration task was not accepted by an event loop: {}",
                            AbstractChannel.this, t);
                    closeForcibly();
                    closeFuture.setClosed();
                    safeSetFailure(promise, t);
                }
            }
        }

Domain

Subdomains

Frequently Asked Questions

What does register() do?
register() is a function in the netty codebase, defined in transport/src/main/java/io/netty/channel/AbstractChannel.java.
Where is register() defined?
register() is defined in transport/src/main/java/io/netty/channel/AbstractChannel.java at line 323.
What does register() call?
register() calls 6 function(s): closeForcibly, isCompatible, isRegistered, register0, safeSetFailure, setClosed.

Analyze Your Own Codebase

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

Try Supermodel Free