org.simpleframework.util.buffer
Class ArrayAllocator

java.lang.Object
  extended by org.simpleframework.util.buffer.ArrayAllocator
All Implemented Interfaces:
java.io.Closeable, Allocator

public class ArrayAllocator
extends java.lang.Object
implements Allocator

The ArrayAllocator object is used to provide a means to allocate buffers using a single byte array. This essentially uses the heap to allocate all buffers. As a result the performance of the resulting buffers is good, however for very large buffers this will use quote allot of the usable heap space. For very large buffers a mapped region of shared memory of a file should be considered.

Author:
Niall Gallagher

Constructor Summary
ArrayAllocator()
          Constructor for the ArrayAllocator object.
ArrayAllocator(int size)
          Constructor for the ArrayAllocator object.
ArrayAllocator(int size, int limit)
          Constructor for the ArrayAllocator object.
 
Method Summary
 Buffer allocate()
          This method is used to allocate a default buffer.
 Buffer allocate(int size)
          This method is used to allocate a default buffer.
 void close()
          This method is used to close the allocator so that resources that are occupied by the allocator can be freed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArrayAllocator

public ArrayAllocator()
Constructor for the ArrayAllocator object. This is used to instantiate the allocator with a default buffer size of half a kilobyte. This ensures that it can be used for general purpose byte storage and for minor I/O tasks.


ArrayAllocator

public ArrayAllocator(int size)
Constructor for the ArrayAllocator object. This is used to instantiate the allocator with a specified buffer size. This is typically used when a very specific buffer capacity is required, for example a request body with a known length.

Parameters:
size - the initial capacity of the allocated buffers

ArrayAllocator

public ArrayAllocator(int size,
                      int limit)
Constructor for the ArrayAllocator object. This is used to instantiate the allocator with a specified buffer size. This is typically used when a very specific buffer capacity is required, for example a request body with a known length.

Parameters:
size - the initial capacity of the allocated buffers
limit - this is the maximum buffer size created by this
Method Detail

allocate

public Buffer allocate()
                throws java.io.IOException
This method is used to allocate a default buffer. This will allocate a buffer of predetermined size, allowing it to grow to an upper limit to accomodate extra data. If the buffer requested is larger than the limit an exception is thrown.

Specified by:
allocate in interface Allocator
Returns:
this returns an allocated buffer with a default size
Throws:
java.io.IOException

allocate

public Buffer allocate(int size)
                throws java.io.IOException
This method is used to allocate a default buffer. This will allocate a buffer of predetermined size, allowing it to grow to an upper limit to accomodate extra data. If the buffer requested is larger than the limit an exception is thrown.

Specified by:
allocate in interface Allocator
Parameters:
size - the initial capacity of the allocated buffer
Returns:
this returns an allocated buffer with a default size
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
This method is used to close the allocator so that resources that are occupied by the allocator can be freed. This will allow the allocator to be created and closed repeatedly in a single process without holding on to resources such as mapped file buffers or threads.

Specified by:
close in interface java.io.Closeable
Specified by:
close in interface Allocator
Throws:
java.io.IOException