package org.limewire.nio; import java.nio.ByteBuffer; /** * Provides both direct and non-direct caches of {@link ByteBuffer ByteBuffers}. * See <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html#direct"> * direct vs. non-direct</a> buffers for more information. */ public class ByteBufferCache { private final DirectByteBufferCache DIRECT = new DirectByteBufferCache(); private final HeapByteBufferCache HEAP = new HeapByteBufferCache(); public ByteBuffer getDirect() { return DIRECT.get(); } public ByteBuffer getHeap() { return HEAP.get(); } public ByteBuffer getHeap(int size) { return HEAP.get(size); } public long getHeapCacheSize() { return HEAP.getByteSize(); } public void release(ByteBuffer buffer) { if(buffer.isDirect()) DIRECT.put(buffer); else HEAP.put(buffer); } public void clearCache() { DIRECT.clear(); HEAP.clear(); } }