public async Task <EpoxyConnection> ConnectToAsync(Endpoint endpoint, CancellationToken ct) { logger.Site().Information("Connecting to {0}.", endpoint); EpoxyClientTlsConfig tlsConfig = endpoint.UseTls ? clientTlsConfig : null; try { EpoxyNetworkStream epoxyStream = await EpoxyNetworkStream.MakeAsync( socketFunc : () => ConnectClientSocketAsync(endpoint), streamFunc : socket => EpoxyNetworkStream.MakeClientStreamAsync(endpoint.Host, socket, tlsConfig, logger), timeoutConfig : timeoutConfig, logger : logger); // TODO: keep these in some master collection for shutdown var connection = EpoxyConnection.MakeClientConnection(this, epoxyStream, logger, metrics); await connection.StartAsync(); return(connection); } catch (Exception ex) { logger.Site().Error(ex, "Failed to start Epoxy client connection to '{0}'", endpoint); throw; } }
public async Task <EpoxyConnection> ConnectToAsync(Endpoint endpoint, CancellationToken ct) { logger.Site().Information("Connecting to {0}.", endpoint); Socket socket = await ConnectClientSocketAsync(endpoint); // For MakeClientStreamAsync, null TLS config means insecure EpoxyClientTlsConfig tlsConfig = endpoint.UseTls ? clientTlsConfig : null; var epoxyStream = await EpoxyNetworkStream.MakeClientStreamAsync(endpoint.Host, socket, tlsConfig, logger); // TODO: keep these in some master collection for shutdown var connection = EpoxyConnection.MakeClientConnection(this, epoxyStream, logger, metrics); await connection.StartAsync(); return(connection); }
public async Task <EpoxyConnection> ConnectToAsync(Endpoint endpoint, CancellationToken ct) { logger.Site().Information("Connecting to {0}.", endpoint); EpoxyClientTlsConfig tlsConfig = endpoint.UseTls ? clientTlsConfig : null; try { EpoxyNetworkStream epoxyStream = await EpoxyNetworkStream.MakeAsync( socketFunc : () => ConnectClientSocketAsync(endpoint), streamFunc : socket => EpoxyNetworkStream.MakeClientStreamAsync(endpoint.Host, socket, tlsConfig, logger), timeoutConfig : timeoutConfig, logger : logger); var connection = EpoxyConnection.MakeClientConnection(this, epoxyStream, logger, metrics); try { connections.Add(connection); } catch (InvalidOperationException) { await connection.StopAsync(); throw new InvalidOperationException("This EpoxyTransport has been stopped already."); } await connection.StartAsync(); return(connection); } catch (Exception ex) { logger.Site().Error(ex, "Failed to start Epoxy client connection to '{0}'", endpoint); throw; } }