Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
 public HttpDotNettyClientHandler(IDotNettyClientOptions options)
 {
     _options        = options ?? throw new ArgumentNullException(nameof(options));
     RequestExecutor = new DotNettyHttpRequestExecutor(options);
 }
Exemple #5
0
 internal abstract IHostConnectionPool CreateConnectionPool(IDotNettyClientOptions options);
Exemple #6
0
 internal override IHostConnectionPool CreateConnectionPool(IDotNettyClientOptions options)
 {
     return(new HostConnectionPool(options));
 }