connectNow() — netty Function Reference
Architecture documentation for the connectNow() function in QuicheQuicChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4["connectNow()"] 3c534d05_bb5b_c991_5e03_7ec94e739cf7["QuicheQuicChannel"] 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4 -->|defined in| 3c534d05_bb5b_c991_5e03_7ec94e739cf7 7e530031_1fc0_9db2_5da3_39f49817a6b6["failConnectPromiseAndThrow()"] 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4 -->|calls| 7e530031_1fc0_9db2_5da3_39f49817a6b6 f6e857b5_5d30_f085_30c4_531d4e875782["attachQuicheConnection()"] 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4 -->|calls| f6e857b5_5d30_f085_30c4_531d4e875782 style 4a98ac7e_20ab_0b82_c3e4_c1bf190a70c4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java lines 330–390
void connectNow(Function<QuicChannel, ? extends QuicSslEngine> engineProvider, Executor sslTaskExecutor,
Consumer<QuicheQuicChannel> freeTask, long configAddr, int localConnIdLength,
boolean supportsDatagram, ByteBuffer fromSockaddrMemory, ByteBuffer toSockaddrMemory)
throws Exception {
assert this.connection == null;
assert this.traceId == null;
assert this.sourceConnectionIds.isEmpty();
this.sslTaskExecutor = sslTaskExecutor;
this.freeTask = freeTask;
QuicConnectionAddress address = this.connectAddress;
if (address == QuicConnectionAddress.EPHEMERAL) {
address = QuicConnectionAddress.random(localConnIdLength);
}
ByteBuffer connectId = address.id();
if (connectId.remaining() != localConnIdLength) {
failConnectPromiseAndThrow(new IllegalArgumentException("connectionAddress has length "
+ connectId.remaining()
+ " instead of " + localConnIdLength));
}
QuicSslEngine engine = engineProvider.apply(this);
if (!(engine instanceof QuicheQuicSslEngine)) {
failConnectPromiseAndThrow(new IllegalArgumentException("QuicSslEngine is not of type "
+ QuicheQuicSslEngine.class.getSimpleName()));
return;
}
if (!engine.getUseClientMode()) {
failConnectPromiseAndThrow(new IllegalArgumentException("QuicSslEngine is not create in client mode"));
}
QuicheQuicSslEngine quicheEngine = (QuicheQuicSslEngine) engine;
ByteBuf idBuffer = alloc().directBuffer(connectId.remaining()).writeBytes(connectId.duplicate());
try {
int fromSockaddrLen = SockaddrIn.setAddress(fromSockaddrMemory, local);
int toSockaddrLen = SockaddrIn.setAddress(toSockaddrMemory, remote);
QuicheQuicConnection connection = quicheEngine.createConnection(ssl ->
Quiche.quiche_conn_new_with_tls(Quiche.readerMemoryAddress(idBuffer),
idBuffer.readableBytes(), -1, -1,
Quiche.memoryAddressWithPosition(fromSockaddrMemory), fromSockaddrLen,
Quiche.memoryAddressWithPosition(toSockaddrMemory), toSockaddrLen,
configAddr, ssl, false));
if (connection == null) {
failConnectPromiseAndThrow(new ConnectException());
return;
}
attachQuicheConnection(connection);
QuicClientSessionCache sessionCache = quicheEngine.ctx.getSessionCache();
if (sessionCache != null) {
byte[] sessionBytes = sessionCache
.getSession(quicheEngine.getSession().getPeerHost(), quicheEngine.getSession().getPeerPort());
if (sessionBytes != null) {
Quiche.quiche_conn_set_session(connection.address(), sessionBytes);
}
}
this.supportsDatagram = supportsDatagram;
sourceConnectionIds.add(connectId);
} finally {
idBuffer.release();
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does connectNow() do?
connectNow() is a function in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java.
Where is connectNow() defined?
connectNow() is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java at line 330.
What does connectNow() call?
connectNow() calls 2 function(s): attachQuicheConnection, failConnectPromiseAndThrow.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free