package org.jacorb.orb; import java.lang.ref.SoftReference; import java.util.Collection; import java.util.concurrent.ConcurrentLinkedQueue; import org.jacorb.config.Configuration; public class JDK15NonSyncBufferManager extends BufferManager { public JDK15NonSyncBufferManager(Configuration configuration) { super(configuration); } protected Collection[] initBufferPool(Configuration configuration, int maxSize) { Collection[] list = new ConcurrentLinkedQueue[maxSize]; for (int i = 0; i < list.length; i++) { list[i] = new ConcurrentLinkedQueue(); } return list; } protected byte[] doFetchBuffer(Collection list) { SoftReference entry; while( (entry = (SoftReference) ((ConcurrentLinkedQueue)list).poll()) != null) { byte[] result = (byte[]) entry.get(); if (result != null) { return result; } } return null; } protected void doReturnBuffer(Collection list, byte[] buffer, int threshold) { if (list.size() < threshold) { list.add(new SoftReference(buffer)); } } protected void storeBuffer(int position, byte[] buffer) { bufferPool[ position ].add(new SoftReference(buffer)); } }