package org.limewire.nio;
import java.nio.ByteBuffer;
import java.util.Stack;
/**
* Provides a <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html#direct">direct</a>
* cache of {@link ByteBuffer ByteBuffers}.
*/
public class DirectByteBufferCache {
private final Stack<ByteBuffer> CACHE = new Stack<ByteBuffer>();
public ByteBuffer get() {
synchronized (CACHE) {
if (CACHE.isEmpty()) {
ByteBuffer buf = ByteBuffer.allocateDirect(8192);
return buf;
} else {
return CACHE.pop();
}
}
}
public void put(ByteBuffer buf) {
buf.clear();
CACHE.push(buf);
}
public void clear() {
CACHE.clear();
}
}