org.apache.mina.common

Class PooledByteBufferAllocator

Implemented Interfaces:
ByteBufferAllocator

public class PooledByteBufferAllocator
extends java.lang.Object
implements ByteBufferAllocator

A ByteBufferAllocator which pools allocated buffers.

All buffers are allocated with the size of power of 2 (e.g. 16, 32, 64, ...) This means that you cannot simply assume that the actual capacity of the buffer and the capacity you requested are same.

This allocator releases the buffers which have not been in use for a certain period. You can adjust the period by calling setTimeout(int). The default timeout is 1 minute (60 seconds). To release these buffers periodically, a daemon thread is started when a new instance of the allocator is created. You can stop the thread by calling dispose().

Constructor Summary

PooledByteBufferAllocator()
Creates a new instance with the default timeout.
PooledByteBufferAllocator(int timeout)
Creates a new instance with the specified timeout.

Method Summary

ByteBuffer
allocate(int capacity, boolean direct)
void
dispose()
Stops the thread which releases unused buffers and make this allocator unusable from now on.
int
getTimeout()
Returns the timeout value of this allocator in seconds.
long
getTimeoutMillis()
Returns the timeout value of this allocator in milliseconds.
void
setTimeout(int timeout)
Sets the timeout value of this allocator in seconds.
ByteBuffer
wrap(java.nio.ByteBuffer nioBuffer)

Constructor Details

PooledByteBufferAllocator

public PooledByteBufferAllocator()
Creates a new instance with the default timeout.

PooledByteBufferAllocator

public PooledByteBufferAllocator(int timeout)
Creates a new instance with the specified timeout.

Method Details

allocate

public ByteBuffer allocate(int capacity,
                           boolean direct)
Specified by:
allocate in interface ByteBufferAllocator

dispose

public void dispose()
Stops the thread which releases unused buffers and make this allocator unusable from now on.
Specified by:
dispose in interface ByteBufferAllocator

getTimeout

public int getTimeout()
Returns the timeout value of this allocator in seconds.

getTimeoutMillis

public long getTimeoutMillis()
Returns the timeout value of this allocator in milliseconds.

setTimeout

public void setTimeout(int timeout)
Sets the timeout value of this allocator in seconds.
Parameters:
timeout - 0 or negative value to disable timeout.

wrap

public ByteBuffer wrap(java.nio.ByteBuffer nioBuffer)
Specified by:
wrap in interface ByteBufferAllocator