--- /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<E> {
+ private ArrayList<Object> locked, unlocked;
+
+ ObjectPool(int size){
+ locked = new ArrayList<Object>(size);
+ unlocked = new ArrayList<Object>(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);
+ }
+
+}