Example #1
0
 public TieredObjectPool([NotNull] IPooledObjectPolicy <T> policy,
                         [NotNull] IPooledObjectDisposePolicy <T> disposePolicy,
                         int maximumRetained,
                         [NotNull] ObjectPool <T> next)
 {
     _policy        = policy ?? throw new ArgumentNullException(nameof(policy));
     _disposePolicy = disposePolicy ?? throw new ArgumentNullException(nameof(disposePolicy));
     _items         = new ObjectWrapper[maximumRetained - 1];
     _next          = next ?? throw new ArgumentNullException(nameof(next));
 }
        public WeakObjectPool([NotNull] IPooledObjectPolicy <T> policy,
                              [NotNull] IPooledObjectDisposePolicy <T> disposePolicy,
                              int maximumRetained)
        {
            if (policy == null)
            {
                throw new ArgumentNullException(nameof(policy));
            }
            if (disposePolicy == null)
            {
                throw new ArgumentNullException(nameof(disposePolicy));
            }

            var wrappedPolicy        = new PolicyAdapter(policy);
            var wrappedDisposePolicy = new DisposePolicyAdapter(disposePolicy);

            _objects = new TieredObjectPool <WeakReference <T> >(
                wrappedPolicy,
                maximumRetained,
                new NullObjectPool <WeakReference <T> >(wrappedPolicy, wrappedDisposePolicy)
                );
        }
 public DisposePolicyAdapter(IPooledObjectDisposePolicy <T> policy)
 {
     _policy = policy;
 }
 public NullObjectPool([NotNull] IPooledObjectPolicy <T> policy,
                       [NotNull] IPooledObjectDisposePolicy <T> disposePolicy)
 {
     _policy        = policy ?? throw new ArgumentNullException(nameof(policy));
     _disposePolicy = disposePolicy ?? throw new ArgumentNullException(nameof(disposePolicy));
 }