/// <summary>Enumerates all leased connections.</summary> /// <remarks>Enumerates all leased connections.</remarks> /// <since>4.3</since> protected internal virtual void EnumLeased(PoolEntryCallback <T, C> callback) { this.Lock.Lock(); try { EnumEntries(this.leased.GetEnumerator(), callback); } finally { this.Lock.Unlock(); } }
/// <summary>Enumerates all available connections.</summary> /// <remarks>Enumerates all available connections.</remarks> /// <since>4.3</since> protected internal virtual void EnumAvailable(PoolEntryCallback <T, C> callback) { this.Lock.Lock(); try { EnumEntries(this.available.GetEnumerator(), callback); } finally { this.Lock.Unlock(); } }
private void EnumEntries(IEnumerator <E> it, PoolEntryCallback <T, C> callback) { while (it.HasNext()) { E entry = it.Next(); callback.Process(entry); if (entry.IsClosed()) { RouteSpecificPool <T, C, E> pool = GetPool(entry.GetRoute()); pool.Remove(entry); it.Remove(); } } }