Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/BufferPool.java')
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/BufferPool.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/BufferPool.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/BufferPool.java
index 486e8771de..1c21511bb6 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/BufferPool.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/BufferPool.java
@@ -18,6 +18,7 @@ import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.internal.net4j.bundle.OM;
+import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.text.MessageFormat;
@@ -36,10 +37,10 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
private int pooledBuffers;
@ExcludeFromDump
- private final Queue<BufferRef> buffers = new ConcurrentLinkedQueue();
+ private final Queue<BufferRef> buffers = new ConcurrentLinkedQueue<BufferRef>();
@ExcludeFromDump
- private final ReferenceQueue<BufferRef> referenceQueue = new ReferenceQueue();
+ private final ReferenceQueue<IBuffer> referenceQueue = new ReferenceQueue<IBuffer>();
@ExcludeFromDump
private Monitor monitor;
@@ -55,7 +56,7 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
return provider;
}
- public ReferenceQueue<BufferRef> getReferenceQueue()
+ public ReferenceQueue<IBuffer> getReferenceQueue()
{
return referenceQueue;
}
@@ -114,6 +115,11 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
return MessageFormat.format("BufferPool[{0}]", getBufferCapacity()); //$NON-NLS-1$
}
+ protected BufferRef createBufferRef(IBuffer buffer)
+ {
+ return new BufferRef(buffer, referenceQueue);
+ }
+
@Override
protected IBuffer doProvideBuffer()
{
@@ -156,7 +162,8 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
TRACER.trace("Retaining " + buffer); //$NON-NLS-1$
}
- buffers.add(new BufferRef(buffer, referenceQueue));
+ BufferRef bufferRef = createBufferRef(buffer);
+ buffers.add(bufferRef);
++pooledBuffers;
}
@@ -178,7 +185,7 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
private static final class BufferRef extends SoftReference<IBuffer>
{
- public BufferRef(IBuffer buffer, ReferenceQueue queue)
+ public BufferRef(IBuffer buffer, ReferenceQueue<IBuffer> queue)
{
super(buffer, queue);
}
@@ -204,7 +211,7 @@ public class BufferPool extends BufferProvider implements IBufferPool, IBufferPo
{
while (isActive() && !isInterrupted())
{
- BufferRef bufferRef = (BufferRef)referenceQueue.remove(200);
+ Reference<? extends IBuffer> bufferRef = referenceQueue.remove(200);
if (bufferRef != null)
{
if (buffers.remove(bufferRef))

Back to the top