org.glassfish.grizzly.memory
Class Buffers

java.lang.Object
  extended by org.glassfish.grizzly.memory.Buffers

public class Buffers
extends Object

Class has useful methods to simplify the work with Buffers.

Author:
Alexey Stashok
See Also:
Buffer

Field Summary
static Buffer EMPTY_BUFFER
           
static ByteBuffer EMPTY_BYTE_BUFFER
           
static ByteBuffer[] EMPTY_BYTE_BUFFER_ARRAY
           
 
Constructor Summary
Buffers()
           
 
Method Summary
static Buffer appendBuffers(MemoryManager memoryManager, Buffer buffer1, Buffer buffer2)
          Append two Buffers.
static Buffer appendBuffers(MemoryManager memoryManager, Buffer buffer1, Buffer buffer2, boolean isCompositeBufferDisposable)
          Append two Buffers.
static Buffer cloneBuffer(Buffer srcBuffer)
          Clones the source Buffer.
static Buffer cloneBuffer(Buffer srcBuffer, int position, int limit)
          Clones the source Buffer.
static void fill(Buffer buffer, byte b)
          Fill the Buffer with the specific byte value.
static void fill(Buffer buffer, int position, int limit, byte b)
          Fill the Buffer's part [position, limit) with the specific byte value starting from the Buffer's position won't be changed.
static void fill(ByteBuffer byteBuffer, byte b)
          Fill the ByteBuffer with the specific byte value.
static void fill(ByteBuffer byteBuffer, int position, int limit, byte b)
          Fill the ByteBuffer's part [position, limit) with the specific byte value starting from the ByteBuffer's position won't be changed.
static void get(ByteBuffer srcBuffer, byte[] dstBytes, int dstOffset, int length)
           
static Appender<Buffer> getBufferAppender(boolean isCompositeBufferDisposable)
          Get the Appender which knows how to append Buffers.
static void put(Buffer src, int position, int length, Buffer dstBuffer)
           
static void put(byte[] srcBytes, int srcOffset, int length, ByteBuffer dstBuffer)
           
static void put(ByteBuffer srcBuffer, int srcOffset, int length, ByteBuffer dstBuffer)
           
static void setPositionLimit(Buffer buffer, int position, int limit)
           
static void setPositionLimit(ByteBuffer buffer, int position, int limit)
           
static ByteBuffer slice(ByteBuffer chunk, int size)
          Slice ByteBuffer of required size from big chunk.
static ByteBuffer slice(ByteBuffer byteBuffer, int position, int limit)
          Get the ByteBuffer's slice basing on its passed position and limit.
static String toStringContent(ByteBuffer byteBuffer, Charset charset, int position, int limit)
           
static Buffer wrap(MemoryManager memoryManager, byte[] array)
          Returns Buffer, which wraps the byte array.
static Buffer wrap(MemoryManager memoryManager, byte[] array, int offset, int length)
          Returns Buffer, which wraps the part of byte array with specific offset and length.
static Buffer wrap(MemoryManager memoryManager, ByteBuffer byteBuffer)
          Returns Buffer, which wraps the ByteBuffer.
static Buffer wrap(MemoryManager memoryManager, String s)
          Returns Buffer, which wraps the String.
static Buffer wrap(MemoryManager memoryManager, String s, Charset charset)
          Returns Buffer, which wraps the String with the specific Charset.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY_BYTE_BUFFER

public static final ByteBuffer EMPTY_BYTE_BUFFER

EMPTY_BYTE_BUFFER_ARRAY

public static final ByteBuffer[] EMPTY_BYTE_BUFFER_ARRAY

EMPTY_BUFFER

public static final Buffer EMPTY_BUFFER
Constructor Detail

Buffers

public Buffers()
Method Detail

getBufferAppender

public static Appender<Buffer> getBufferAppender(boolean isCompositeBufferDisposable)
Get the Appender which knows how to append Buffers. Returned Appender uses the same Buffer appending rules as described here appendBuffers(org.glassfish.grizzly.memory.MemoryManager, org.glassfish.grizzly.Buffer, org.glassfish.grizzly.Buffer, boolean).

Parameters:
isCompositeBufferDisposable - if as the result of Buffers appending a new CompositeBuffer will be created - its Buffer.allowBufferDispose(boolean) value will be set according to this parameter.
Returns:
the Buffer Appender.

wrap

public static Buffer wrap(MemoryManager memoryManager,
                          String s)
Returns Buffer, which wraps the String.

Parameters:
memoryManager - MemoryManager, which should be used for wrapping.
s - String
Returns:
Buffer wrapper on top of passed String.

wrap

public static Buffer wrap(MemoryManager memoryManager,
                          String s,
                          Charset charset)
Returns Buffer, which wraps the String with the specific Charset.

Parameters:
memoryManager - MemoryManager, which should be used for wrapping.
s - String
charset - Charset, which will be used, when converting String to byte array.
Returns:
Buffer wrapper on top of passed String.

wrap

public static Buffer wrap(MemoryManager memoryManager,
                          byte[] array)
Returns Buffer, which wraps the byte array.

Parameters:
memoryManager - MemoryManager, which should be used for wrapping.
array - byte array to wrap.
Returns:
Buffer wrapper on top of passed byte array.

wrap

public static Buffer wrap(MemoryManager memoryManager,
                          byte[] array,
                          int offset,
                          int length)
Returns Buffer, which wraps the part of byte array with specific offset and length.

Parameters:
memoryManager - MemoryManager, which should be used for wrapping.
array - byte array to wrap
offset - byte buffer offset
length - byte buffer length
Returns:
Buffer wrapper on top of passed byte array.

wrap

public static Buffer wrap(MemoryManager memoryManager,
                          ByteBuffer byteBuffer)
Returns Buffer, which wraps the ByteBuffer.

Parameters:
memoryManager - MemoryManager, which should be used for wrapping.
byteBuffer - ByteBuffer to wrap
Returns:
Buffer wrapper on top of passed ByteBuffer.

slice

public static ByteBuffer slice(ByteBuffer chunk,
                               int size)
Slice ByteBuffer of required size from big chunk. Passed chunk position will be changed, after the slicing (chunk.position += size).

Parameters:
chunk - big ByteBuffer pool.
size - required slice size.
Returns:
sliced ByteBuffer of required size.

slice

public static ByteBuffer slice(ByteBuffer byteBuffer,
                               int position,
                               int limit)
Get the ByteBuffer's slice basing on its passed position and limit. Position and limit values of the passed ByteBuffer won't be changed. The result ByteBuffer position will be equal to 0, and limit equal to number of sliced bytes (limit - position).

Parameters:
byteBuffer - ByteBuffer to slice/
position - the position in the passed byteBuffer, the slice will start from.
limit - the limit in the passed byteBuffer, the slice will be ended.
Returns:
sliced ByteBuffer of required size.

toStringContent

public static String toStringContent(ByteBuffer byteBuffer,
                                     Charset charset,
                                     int position,
                                     int limit)

setPositionLimit

public static void setPositionLimit(Buffer buffer,
                                    int position,
                                    int limit)

setPositionLimit

public static void setPositionLimit(ByteBuffer buffer,
                                    int position,
                                    int limit)

put

public static void put(ByteBuffer srcBuffer,
                       int srcOffset,
                       int length,
                       ByteBuffer dstBuffer)

put

public static void put(Buffer src,
                       int position,
                       int length,
                       Buffer dstBuffer)

get

public static void get(ByteBuffer srcBuffer,
                       byte[] dstBytes,
                       int dstOffset,
                       int length)

put

public static void put(byte[] srcBytes,
                       int srcOffset,
                       int length,
                       ByteBuffer dstBuffer)

appendBuffers

public static Buffer appendBuffers(MemoryManager memoryManager,
                                   Buffer buffer1,
                                   Buffer buffer2)
Append two Buffers. If one of the Buffers is null - then another Buffer will be returned as result. If the first Buffer is CompositeBuffer then the second Buffer will be appended to it via Appendable.append(java.lang.Object), else if the second Buffer is CompositeBuffer then the first Buffer will be prepended to it via CompositeBuffer.prepend(org.glassfish.grizzly.Buffer). If none of the Buffer parameters is null nor CompositeBuffers - then new CompositeBuffer will be created and both Buffers will be added there. The resulting CompositeBuffer will be disallowed for disposal.

Parameters:
memoryManager -
buffer1 -
buffer2 -
Returns:
the result of appending of two Buffers.

appendBuffers

public static Buffer appendBuffers(MemoryManager memoryManager,
                                   Buffer buffer1,
                                   Buffer buffer2,
                                   boolean isCompositeBufferDisposable)
Append two Buffers. If one of the Buffers is null - then another Buffer will be returned as result. If the first Buffer is CompositeBuffer then the second Buffer will be appended to it via Appendable.append(java.lang.Object), else if the second Buffer is CompositeBuffer then the first Buffer will be prepended to it via CompositeBuffer.prepend(org.glassfish.grizzly.Buffer). If none of the Buffer parameters is null nor CompositeBuffers - then new CompositeBuffer will be created and both Buffers will be added there. The resulting CompositeBuffer will be assigned according to the isCompositeBufferDisposable parameter.

Parameters:
memoryManager -
buffer1 -
buffer2 -
isCompositeBufferDisposable -
Returns:
the result of appending of two Buffers.

fill

public static void fill(Buffer buffer,
                        byte b)
Fill the Buffer with the specific byte value. Buffer's position won't be changed.

Parameters:
buffer - Buffer
b - value

fill

public static void fill(Buffer buffer,
                        int position,
                        int limit,
                        byte b)
Fill the Buffer's part [position, limit) with the specific byte value starting from the Buffer's position won't be changed.

Parameters:
buffer - Buffer
position - Buffer position to start with (inclusive)
limit - Buffer limit, where filling ends (exclusive)
b - value

fill

public static void fill(ByteBuffer byteBuffer,
                        byte b)
Fill the ByteBuffer with the specific byte value. ByteBuffer's position won't be changed.

Parameters:
byteBuffer - ByteBuffer
b - value

fill

public static void fill(ByteBuffer byteBuffer,
                        int position,
                        int limit,
                        byte b)
Fill the ByteBuffer's part [position, limit) with the specific byte value starting from the ByteBuffer's position won't be changed.

Parameters:
byteBuffer - ByteBuffer
position - ByteBuffer position to start with (inclusive)
limit - Buffer limit, where filling ends (exclusive)
b - value

cloneBuffer

public static Buffer cloneBuffer(Buffer srcBuffer)
Clones the source Buffer. The method returns a new Buffer instance, which has the same content. Please note, source and result Buffers have the same content, but it is *not* shared, so the following content changes in one of the Buffers won't be visible in another one.

Parameters:
srcBuffer - the source Buffer.
Returns:
the cloned Buffer.

cloneBuffer

public static Buffer cloneBuffer(Buffer srcBuffer,
                                 int position,
                                 int limit)
Clones the source Buffer. The method returns a new Buffer instance, which has the same content. Please note, source and result Buffers have the same content, but it is *not* shared, so the following content changes in one of the Buffers won't be visible in another one.

Parameters:
srcBuffer - the source Buffer.
position - the start position in the srcBuffer
limit - the end position in the srcBuffer
Returns:
the cloned Buffer.


Copyright © 2012 Oracle Corporation. All Rights Reserved.