private LinkedBlockingDeque<String> PopulatedDeque(int n) { LinkedBlockingDeque<String> q = new LinkedBlockingDeque<String>(n); Assert.IsTrue(q.IsEmpty()); for(int i = 0; i < n; i++) { Assert.IsTrue(q.Offer(i.ToString())); } Assert.IsFalse(q.IsEmpty()); Assert.AreEqual(0, q.RemainingCapacity()); Assert.AreEqual(n, q.Size()); return q; }
public override void ReturnObject(T obj) { PooledObject <T> p = allObjects[obj] as PooledObject <T>; if (p == null) { throw new IllegalStateException("Returned object not currently part of this pool"); } if (TestOnReturn) { if (!factory.ValidateObject(obj)) { try { Destroy(p); } catch { } return; } } try { factory.SuspendObject(obj); } catch { try { Destroy(p); } catch { } return; } if (!p.Deallocate()) { throw new IllegalStateException("Object has already been retured to this pool"); } int maxIdle = MaxIdle; if (IsClosed || maxIdle > -1 && maxIdle <= idleObjects.Size()) { try { Destroy(p); } catch { } } else { if (Lifo) { idleObjects.AddFirst(p); } else { idleObjects.AddLast(p); } } }