public void FinishConnect(SocketChannelAsyncOperation operation) { Contract.Assert(this.channel.EventLoop.InEventLoop); AbstractSocketChannel ch = this.Channel; try { bool wasActive = ch.Active; ch.DoFinishConnect(operation); this.FulfillConnectPromise(wasActive); } catch (Exception ex) { TaskCompletionSource promise = ch.connectPromise; var remoteAddress = (EndPoint)promise?.Task.AsyncState; this.FulfillConnectPromise(this.AnnotateConnectException(ex, remoteAddress)); } finally { // Check for null as the connectTimeoutFuture is only created if a connectTimeoutMillis > 0 is used // See https://github.com/netty/netty/issues/1770 ch.connectCancellationTask?.Cancel(); ch.connectPromise = null; } }
public void FinishConnect(SocketChannelAsyncOperation operation) { // Note this method is invoked by the event loop only if the connection attempt was // neither cancelled nor timed out. Contract.Assert(this.channel.EventLoop.InEventLoop); AbstractSocketChannel ch = this.Channel; try { bool wasActive = !ch.ResetState(StateFlags.ActivationPending); ch.DoFinishConnect(operation); this.FulfillConnectPromise(wasActive); } catch (Exception ex) { TaskCompletionSource promise = ch.connectPromise; EndPoint remoteAddress = promise == null ? null : (EndPoint)promise.Task.AsyncState; this.FulfillConnectPromise(this.AnnotateConnectException(ex, remoteAddress)); } finally { // Check for null as the connectTimeoutFuture is only created if a connectTimeoutMillis > 0 is used // See https://github.com/netty/netty/issues/1770 if (ch.connectCancellation != null) { ch.connectCancellation.Cancel(); } ch.connectPromise = null; } }