src/org/sipdroid/net/tools/ObjectPool.java
author nikita@nikita-laptop
Sat, 23 Jan 2010 21:48:58 +0100
changeset 833 f5a5d9237d69
parent 823 2036ebfaccda
permissions -rw-r--r--
remove some unused files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
823
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     1
package org.sipdroid.net.tools;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     2
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     3
import java.util.ArrayList;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     4
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     5
public abstract class ObjectPool<E> {  
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     6
	private ArrayList<Object> locked, unlocked;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     7
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     8
	ObjectPool(int size){
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     9
		locked = new ArrayList<Object>(size);         
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    10
		unlocked = new ArrayList<Object>(size);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    11
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    12
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    13
	public int getPoolSize() {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    14
		return locked.size() + unlocked.size();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    15
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    16
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    17
	abstract Object create();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    18
	abstract boolean validate( Object o );
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    19
	synchronized Object checkOut(){     
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    20
		if(unlocked.size() > 0){
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    21
			Object cur = unlocked.get(0);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    22
			unlocked.remove(cur);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    23
			locked.add(cur);           
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    24
			return(cur);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    25
		}      
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    26
		// no objects available, create a new one
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    27
		Object o = create();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    28
		locked.add(o);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    29
		return(o);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    30
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    31
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    32
	synchronized void checkIn( Object o ) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    33
		locked.remove( o );
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    34
		unlocked.add(o);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    35
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    36
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    37
}