From 6158e33ef133e4c726e59eed0fcfbf52f858e05b Mon Sep 17 00:00:00 2001 From: Alessio Parma Date: Sun, 2 Apr 2017 00:39:02 +0200 Subject: [PATCH] extensibility... --- .../Core/PooledObjectInfo.cs | 5 ++++ src/CodeProject.ObjectPool/ObjectPool.cs | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/CodeProject.ObjectPool/Core/PooledObjectInfo.cs b/src/CodeProject.ObjectPool/Core/PooledObjectInfo.cs index 7f499e0..6518559 100644 --- a/src/CodeProject.ObjectPool/Core/PooledObjectInfo.cs +++ b/src/CodeProject.ObjectPool/Core/PooledObjectInfo.cs @@ -34,6 +34,11 @@ public sealed class PooledObjectInfo /// public int Id { get; internal set; } + /// + /// Payload which can be used to add custom information to a pooled object. + /// + public object Payload { get; set; } + /// /// Enumeration that is being managed by the pool to describe the object state - primary /// used to void cases where the resources are being releases twice. diff --git a/src/CodeProject.ObjectPool/ObjectPool.cs b/src/CodeProject.ObjectPool/ObjectPool.cs index 7360468..014be3f 100644 --- a/src/CodeProject.ObjectPool/ObjectPool.cs +++ b/src/CodeProject.ObjectPool/ObjectPool.cs @@ -11,6 +11,7 @@ using CodeProject.ObjectPool.Core; using PommaLabs.Thrower; using System; +using System.Collections.Generic; using System.Linq; using System.Threading; @@ -240,6 +241,28 @@ void IObjectPoolHandle.ReturnObjectToPool(PooledObject objectToReturnToPool, boo #endregion Pool Operations + #region Extensibility + + /// + /// All objects currently stored inside the pool. + /// + protected IEnumerable PooledObjects + { + get + { + for (var i = 0; i <= _pooledObjects.Length; ++i) + { + var item = _pooledObjects[i]; + if (item != null) + { + yield return item; + } + } + } + } + + #endregion Extensibility + #region Low-level Pooling ///