Esempio n. 1
0
        /// <summary>
        /// Called when handler entry expired.  Removes from active list
        /// and adds weak reference to expiry queue.  When garbage collected
        /// expired handlers are cleaned up.
        /// </summary>
        /// <param name="active"></param>
        private void OnHandlerExpired(ActiveHandlerEntry active)
        {
            var removed = _activeHandlers.TryRemove(active.Name, out var found);

            _expiredHandlers.Enqueue(new ExpiredHandlerEntry(active));
            StartCleanupTimer();
        }
Esempio n. 2
0
        /// <summary>
        /// Called when handler entry expired.  Removes from active list
        /// and adds weak reference to expiry queue.  When garbage collected
        /// expired handlers are cleaned up.
        /// </summary>
        /// <param name="active"></param>
        private void OnHandlerExpired(ActiveHandlerEntry active)
        {
#pragma warning disable IDE0067 // Dispose objects before losing scope
            _activeHandlers.TryRemove(active.Name, out _);
            _expiredHandlers.Enqueue(new ExpiredHandlerEntry(active));
#pragma warning restore IDE0067 // Dispose objects before losing scope
            StartCleanupTimer();
        }
Esempio n. 3
0
        /// <inheritdoc/>
        public System.Net.Http.HttpClient CreateClient(string resourceId)
        {
            if (resourceId == null)
            {
                throw new ArgumentNullException(nameof(resourceId));
            }
            // Get handler entry for client
            var entry = _activeHandlers.GetOrAdd(resourceId,
                                                 key => ActiveHandlerEntry.Create(_factory, key, OnHandlerExpired));

            return(new System.Net.Http.HttpClient(entry, false));
        }
Esempio n. 4
0
 /// <summary>
 /// Create entry
 /// </summary>
 /// <param name="other"></param>
 public ExpiredHandlerEntry(ActiveHandlerEntry other)
 {
     Name             = other.Name;
     _livenessTracker = new WeakReference(other);
     _innerHandler    = other.InnerHandler;
 }