public HostConnectionPool(IDotNettyClientOptions options) { _options = options; MaxCount = _options.ConnectionLimit; if (MaxCount < 1) { throw new ArgumentOutOfRangeException($"{nameof(options.ConnectionLimit)} must be greater than 0"); } _waitEvent = new SemaphoreSlim(options.ConnectionLimit, options.ConnectionLimit); }
public HostDotNettyConnection(Uri uri, Uri proxyUri, IDotNettyClientOptions options) { _certificateValidationCallback = options.RemoteCertificateValidationCallback; _dotNettyPipelineSetupCallback = options.DotNettyPipelineSetupCallback; _dotNettyBootstrapSetupCallback = options.DotNettyBootstrapSetupCallback; _maxLength = options.MaxLength; _proxyCredentials = options.Proxy?.Credentials; _useProxy = options.Proxy != null; Host = uri.Host; Port = uri.Port; IsHttps = uri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase); IsHttpsProxy = proxyUri?.Scheme?.Equals("https", StringComparison.OrdinalIgnoreCase) == true; _uri = uri; _proxyUri = proxyUri; _endPoint = GetEndPoint(_proxyUri ?? uri); InitDotNetty(); }
public DotNettyHttpRequestExecutor(IDotNettyClientOptions options) { _options = options ?? throw new ArgumentNullException(nameof(options)); if (options.ResourcesTimeout <= TimeSpan.FromSeconds(0)) { throw new ArgumentOutOfRangeException($"{nameof(options)}.{nameof(options.ResourcesTimeout)}"); } if (options.ResourcesCheckInterval <= TimeSpan.FromSeconds(0)) { throw new ArgumentOutOfRangeException($"{nameof(options)}.{nameof(options.ResourcesCheckInterval)}"); } if (_options is IAnchoringOptions anchoringOptions) { anchoringOptions.SetApplied(); } _autoCleanCTS = new CancellationTokenSource(); var token = _autoCleanCTS.Token; Task.Run(async() => { while (!token.IsCancellationRequested) { await Task.Delay(options.ResourcesCheckInterval, token).ConfigureAwait(false); Debug.WriteLine($"{DateTime.Now}:Start Auto Cleanup"); await Cleanup(token).ConfigureAwait(false); Debug.WriteLine($"{DateTime.Now}:Auto Cleanup Over"); } }, token); }
public HttpDotNettyClientHandler(IDotNettyClientOptions options) { _options = options ?? throw new ArgumentNullException(nameof(options)); RequestExecutor = new DotNettyHttpRequestExecutor(options); }
internal abstract IHostConnectionPool CreateConnectionPool(IDotNettyClientOptions options);
internal override IHostConnectionPool CreateConnectionPool(IDotNettyClientOptions options) { return(new HostConnectionPool(options)); }