Ejemplo n.º 1
0
        internal ReturnToQueue GetConnection(NodeConnectionInfo nodeConnection, TimeSpan timeout, out HttpClient result)
        {
            var cacheKey        = new HttpCacheKey(nodeConnection, timeout);
            var connectionQueue = _httpClientsCache.GetOrAdd(cacheKey, _ => new ConcurrentQueue <HttpClient>());

            if (connectionQueue.TryDequeue(out result) == false)
            {
                var webRequestHandler = new WebRequestHandler
                {
                    UseDefaultCredentials = nodeConnection.HasCredentials() == false,
                    Credentials           = nodeConnection.ToOperationCredentials().Credentials
                };

                result = new HttpClient(webRequestHandler)
                {
                    BaseAddress = nodeConnection.Uri,
                    Timeout     = timeout
                };
            }

            return(new ReturnToQueue(result, connectionQueue));
        }
Ejemplo n.º 2
0
 protected bool Equals(HttpCacheKey other)
 {
     return(Equals(NodeConnection, other.NodeConnection) && Timeout.Equals(other.Timeout));
 }