public Task <TNiftyClientChannelTransport> ConnectAsync <TChannel, TClient>( INiftyClientConnector <TChannel> clientChannelConnector, TimeSpan?connectTimeout, TimeSpan?receiveTimeout, TimeSpan?readTimeout, TimeSpan?sendTimeout, int maxFrameSize, ClientSslConfig sslConfig, EndPoint socksProxyAddress) where TChannel : INiftyClientChannel { return(ConnectAsync( clientChannelConnector, connectTimeout, receiveTimeout, readTimeout, sendTimeout, maxFrameSize, sslConfig, socksProxyAddress) .ContinueWith(t => { try { return new TNiftyClientChannelTransport(typeof(TClient), t.GetAwaiter().GetResult()); } catch (Exception e) { throw new ThriftyTransportException($"Failed to establish client connection.{Environment.NewLine}{e.Message}", e, ThriftyTransportException.ExceptionType.NotOpen); } })); }
//private IChannelGroup allChannels = new DefaultChannelGroup(); public Task <T> ConnectAsync <T>( INiftyClientConnector <T> clientChannelConnector, ClientSslConfig sslConfig) where T : INiftyClientChannel { return(this.ConnectAsync(clientChannelConnector, DefaultConnectTimeout, DefaultReceiveTimeout, DefaultReadTimeout, DefaultSendTimeout, DefaultMaxFrameSize, sslConfig, this.DefaultSocksProxyAddress)); }
public Task <T> ConnectAsync <T>( INiftyClientConnector <T> clientChannelConnector, TimeSpan?connectTimeout, TimeSpan?receiveTimeout, TimeSpan?readTimeout, TimeSpan?sendTimeout, ClientSslConfig sslConfig, int maxFrameSize) where T : INiftyClientChannel { return(ConnectAsync(clientChannelConnector, connectTimeout, receiveTimeout, readTimeout, sendTimeout, maxFrameSize, sslConfig, this.DefaultSocksProxyAddress)); }
public Task <T> ConnectAsync <T>( INiftyClientConnector <T> clientChannelConnector, TimeSpan?connectTimeout, TimeSpan?receiveTimeout, TimeSpan?readTimeout, TimeSpan?sendTimeout, int maxFrameSize, ClientSslConfig sslConfig, EndPoint socksProxyAddress) where T : INiftyClientChannel { this.ThrowIfDisposed(); Guard.ArgumentNotNull(clientChannelConnector, nameof(clientChannelConnector)); Bootstrap bootstrap = new Bootstrap(); bootstrap.Group(this.WorkerExecutor) .Channel <TcpSocketChannel>() .Option(ChannelOption.TcpNodelay, true); if (connectTimeout != null) { bootstrap.Option(ChannelOption.ConnectTimeout, connectTimeout.Value); } bootstrap.Handler(new ActionChannelInitializer <ISocketChannel>(channel => { clientChannelConnector.ConfigureChannelPipeline(channel.Pipeline, maxFrameSize, this.NettyClientConfig, sslConfig); })); Task <IChannel> connectTask = clientChannelConnector.ConnectAsync(bootstrap); return(connectTask.ContinueWith(t => { if (t.Exception == null && t.Result != null && t.Result.Open) { _allChannel.Add(t.GetAwaiter().GetResult()); } if (t.Exception != null) { _logger.LogError(nameof(EventId), t.Exception, "Failed to establish client connection."); } return CreateNiftyClientChannel(clientChannelConnector, receiveTimeout, readTimeout, sendTimeout, t); })); }
public Task <TNiftyClientChannelTransport> ConnectAsync <T, TClient>( INiftyClientConnector <T> clientChannelConnector, TimeSpan?connectTimeout, TimeSpan?receiveTimeout, TimeSpan?readTimeout, TimeSpan?sendTimeout, int maxFrameSize, ClientSslConfig sslConfig) where T : INiftyClientChannel { return(ConnectAsync <T, TClient>( clientChannelConnector, connectTimeout, receiveTimeout, readTimeout, sendTimeout, maxFrameSize, sslConfig, (EndPoint)null)); }
public void ConfigureChannelPipeline(IChannelPipeline pipeline, int maxFrameSize, NettyClientConfig clientConfig, ClientSslConfig sslConfig) { if (sslConfig != null) { RemoteCertificateValidationCallback validationCallback = sslConfig.ValidateServerCertificate; pipeline.AddLast("tls", new TlsHandler(stream => new SslStream(stream, true, validationCallback), new ClientTlsSettings(this.ServerAddress.GetHost()))); } this.OnConfigureChannelPipeline(pipeline, maxFrameSize, clientConfig); }