public DefaultHttpProxyClientFactory(
            IHttpProxyDefinitionFactory definitionFactory,
            IHttpProxyFactory httpProxyFactory,
            IHttpProxyLoggerFactory loggerFactory,
            IHttpProxyFeatureProvider <IHttpProxyRotationFeature> rotationFeatureProvider,
            IHttpProxyFeatureProvider <IHttpProxyHealthCheckFeature> healthCheckFeatureProvider,
            IHttpProxyFeatureProvider <IHttpProxyRefill> proxyRefillFeatureProvider,
            IOptionsMonitor <HttpProxyClientFactoryOptions> optionsMonitor)
        {
            _loggerFactory              = loggerFactory;
            _rotationFeatureProvider    = rotationFeatureProvider;
            _healthCheckFeatureProvider = healthCheckFeatureProvider;
            _optionsMonitor             = optionsMonitor;
            _proxyRefillFeatureProvider = proxyRefillFeatureProvider;
            _definitionFactory          = definitionFactory;
            _httpProxyFactory           = httpProxyFactory;
            _logger       = loggerFactory.CreateLogger(typeof(DefaultHttpProxyClientFactory));
            _clientStates = new ConcurrentDictionary <string, Lazy <HttpProxyClientState> >(
                StringComparer.InvariantCultureIgnoreCase);

            _lastAcquiredProxies =
                new ConcurrentDictionary <string, IHttpProxy>(StringComparer.InvariantCultureIgnoreCase);

            _deadHandlers     = new ConcurrentQueue <DeadHandlerReference>();
            _cleanupActivity  = new HandlersCleanupActivity(DefaultCleanupPeriod, _deadHandlers, loggerFactory);
            _proxyDefinitions = new HashSet <HttpProxyDefinition>();
        }
Ejemplo n.º 2
0
 public HandlersCleanupActivity(
     TimeSpan period,
     ConcurrentQueue <DeadHandlerReference> handlers,
     IHttpProxyLoggerFactory loggerFactory)
     : base(period, loggerFactory.CreateLogger(typeof(HandlersCleanupActivity)))
 {
     _handlers = handlers;
 }
Ejemplo n.º 3
0
 public ProxyHealthCheckActivity(
     TimeSpan period,
     IHttpProxyLoggerFactory loggerFactory,
     IHttpProxyHealthCheckFeature healthCheck,
     Func <HttpProxyHandlerState, bool> removeHandler,
     Func <IReadOnlyCollection <HttpProxyHandlerState> > handlerAccessor,
     Action <DeadHandlerReference> deadHandlerInsertion)
     : base(period, period, loggerFactory.CreateLogger(typeof(ProxyHealthCheckActivity)))
 {
     _healthCheck          = healthCheck;
     _removeHandler        = removeHandler;
     _handlerAccessor      = handlerAccessor;
     _deadHandlerInsertion = deadHandlerInsertion;
 }
Ejemplo n.º 4
0
 public ProxyRefillActivity(
     TimeSpan period,
     HttpProxyClientFactoryOptions options,
     IHttpProxyLoggerFactory loggerFactory,
     Func <IReadOnlyCollection <IHttpProxy> > aliveProxyAccessor,
     Action <IHttpProxy> proxyInsertCallback,
     IHttpProxyRefill proxyRefill,
     IHttpProxyFactory proxyFactory)
     : base(period, period, loggerFactory.CreateLogger(typeof(ProxyRefillActivity)))
 {
     _options             = options;
     _aliveProxyAccessor  = aliveProxyAccessor;
     _proxyInsertCallback = proxyInsertCallback;
     _proxyRefill         = proxyRefill;
     _proxyFactory        = proxyFactory;
 }
Ejemplo n.º 5
0
 internal HttpProxyClient(HttpProxyHandlerState state, IHttpProxyLoggerFactory loggerFactory)
     : base(state.Handler, disposeHandler: false)
 {
     _httpProxyState = new WeakReference <HttpProxyState>(state.ProxyState);
     _logger         = loggerFactory.CreateLogger($"{nameof(HttpProxyClient)}");
 }