diff -r 537ddd8aa407 -r 2036ebfaccda src/org/sipdroid/net/tools/ObjectPool.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/sipdroid/net/tools/ObjectPool.java Fri Nov 20 19:29:42 2009 +0100 @@ -0,0 +1,37 @@ +package org.sipdroid.net.tools; + +import java.util.ArrayList; + +public abstract class ObjectPool { + private ArrayList locked, unlocked; + + ObjectPool(int size){ + locked = new ArrayList(size); + unlocked = new ArrayList(size); + } + + public int getPoolSize() { + return locked.size() + unlocked.size(); + } + + abstract Object create(); + abstract boolean validate( Object o ); + synchronized Object checkOut(){ + if(unlocked.size() > 0){ + Object cur = unlocked.get(0); + unlocked.remove(cur); + locked.add(cur); + return(cur); + } + // no objects available, create a new one + Object o = create(); + locked.add(o); + return(o); + } + + synchronized void checkIn( Object o ) { + locked.remove( o ); + unlocked.add(o); + } + +}