Home / Function/ connect() — netty Function Reference

connect() — netty Function Reference

Architecture documentation for the connect() function in AbstractNioChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  7ffc6a56_2e62_6b7e_705f_75d97f5f0b56["connect()"]
  60188589_9b31_b825_db5f_7e5167ad54a1["AbstractNioUnsafe"]
  7ffc6a56_2e62_6b7e_705f_75d97f5f0b56 -->|defined in| 60188589_9b31_b825_db5f_7e5167ad54a1
  26574636_288d_2b0f_03b7_7bccc5f17902["doConnect()"]
  7ffc6a56_2e62_6b7e_705f_75d97f5f0b56 -->|calls| 26574636_288d_2b0f_03b7_7bccc5f17902
  123c8fda_87a2_fec2_8833_5ca69a354b9a["fulfillConnectPromise()"]
  7ffc6a56_2e62_6b7e_705f_75d97f5f0b56 -->|calls| 123c8fda_87a2_fec2_8833_5ca69a354b9a
  52cb1857_2882_7fd9_866b_ec40ca61b7be["close()"]
  7ffc6a56_2e62_6b7e_705f_75d97f5f0b56 -->|calls| 52cb1857_2882_7fd9_866b_ec40ca61b7be
  style 7ffc6a56_2e62_6b7e_705f_75d97f5f0b56 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java lines 279–337

        @Override
        public final void connect(
                final SocketAddress remoteAddress, final SocketAddress localAddress, final ChannelPromise promise) {
            // Don't mark the connect promise as uncancellable as in fact we can cancel it as it is using
            // non-blocking io.
            if (promise.isDone() || !ensureOpen(promise)) {
                return;
            }

            try {
                if (connectPromise != null) {
                    // Already a connect in process.
                    throw new ConnectionPendingException();
                }

                boolean wasActive = isActive();
                if (doConnect(remoteAddress, localAddress)) {
                    fulfillConnectPromise(promise, wasActive);
                } else {
                    connectPromise = promise;
                    requestedRemoteAddress = remoteAddress;

                    // Schedule connect timeout.
                    final int connectTimeoutMillis = config().getConnectTimeoutMillis();
                    if (connectTimeoutMillis > 0) {
                        connectTimeoutFuture = eventLoop().schedule(new Runnable() {
                            @Override
                            public void run() {
                                ChannelPromise connectPromise = AbstractNioChannel.this.connectPromise;
                                if (connectPromise != null && !connectPromise.isDone()
                                        && connectPromise.tryFailure(new ConnectTimeoutException(
                                                "connection timed out after " + connectTimeoutMillis + " ms: " +
                                                        remoteAddress))) {
                                    close(voidPromise());
                                }
                            }
                        }, connectTimeoutMillis, TimeUnit.MILLISECONDS);
                    }

                    promise.addListener(new ChannelFutureListener() {
                        @Override
                        public void operationComplete(ChannelFuture future) {
                            // If the connect future is cancelled we also cancel the timeout and close the
                            // underlying socket.
                            if (future.isCancelled()) {
                                if (connectTimeoutFuture != null) {
                                    connectTimeoutFuture.cancel(false);
                                }
                                connectPromise = null;
                                close(voidPromise());
                            }
                        }
                    });
                }
            } catch (Throwable t) {
                promise.tryFailure(annotateConnectException(t, remoteAddress));
                closeIfClosed();
            }
        }

Domain

Subdomains

Frequently Asked Questions

What does connect() do?
connect() is a function in the netty codebase, defined in transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java.
Where is connect() defined?
connect() is defined in transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java at line 279.
What does connect() call?
connect() calls 3 function(s): close, doConnect, fulfillConnectPromise.

Analyze Your Own Codebase

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

Try Supermodel Free