CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation

com.tangosol.io
Class MultiBufferReadBuffer

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.io.AbstractReadBuffer
          extended by com.tangosol.io.MultiBufferReadBuffer
All Implemented Interfaces:
ReadBuffer, Cloneable

public class MultiBufferReadBuffer
extends AbstractReadBuffer

The MultiBufferReadBuffer is a ReadBuffer implementation that presents a view across any number of underlying ReadBuffer objects, as if they were appended end-to-end into a single ReadBuffer.

Author:
cp 2006.04.15

Nested Class Summary
 class MultiBufferReadBuffer.MultiBufferInput
          An implementation of the BufferInput interface that is backed by a series of the underlying ReadBuffer BufferInput objects.
 
Nested classes/interfaces inherited from class com.tangosol.io.AbstractReadBuffer
AbstractReadBuffer.AbstractBufferInput
 
Nested classes/interfaces inherited from interface com.tangosol.io.ReadBuffer
ReadBuffer.BufferInput
 
Field Summary
 
Fields inherited from class com.tangosol.io.AbstractReadBuffer
NO_BINARY, NO_BYTES
 
Constructor Summary
MultiBufferReadBuffer(ReadBuffer[] abuf)
          Construct a MultiBufferReadBuffer from an array of underlying ReadBuffer objects.
 
Method Summary
 byte byteAt(int of)
          Returns the byte at the specified offset.
 void copyBytes(int ofBegin, int ofEnd, byte[] abDest, int ofDest)
          Copies bytes from this ReadBuffer into the destination byte array.
protected  ReadBuffer getBuffer(int iBuffer)
          Obtain the specified buffer.
protected  int getBufferCount()
          Determine the number of ReadBuffer objects that contain the data presented by this MultiBufferReadBuffer.
protected  int getBufferIndexByOffset(int of)
          Determine which underlying ReadBuffer contains the specified offset.
protected  int getBufferOffset(int iBuffer)
          Determine the offset of the specified buffer.
protected  ReadBuffer.BufferInput instantiateBufferInput()
          Factory method: Instantiate a BufferInput object to read data from the ReadBuffer.
protected  ReadBuffer instantiateReadBuffer(int of, int cb)
          Factory method: Instantiate a ReadBuffer for a portion of this ReadBuffer.
 int length()
          Determine the length of the buffer.
 
Methods inherited from class com.tangosol.io.AbstractReadBuffer
checkBounds, clone, equals, getBufferInput, getReadBuffer, toBinary, toBinary, toByteArray, toByteArray
 

Constructor Detail

MultiBufferReadBuffer

public MultiBufferReadBuffer(ReadBuffer[] abuf)
Construct a MultiBufferReadBuffer from an array of underlying ReadBuffer objects.

Parameters:
abuf - an array of ReadBuffer objects from which to construct this MultiBufferReadBuffer
Method Detail

length

public int length()
Determine the length of the buffer.

Returns:
the number of bytes of data represented by this ReadBuffer

byteAt

public byte byteAt(int of)
Returns the byte at the specified offset. An offset ranges from 0 to length() - 1. The first byte of the sequence is at offset 0, the next at offset 1, and so on, as for array indexing.

Parameters:
of - the offset (index) of the byte
Returns:
the byte at the specified offset in this ReadBuffer

copyBytes

public void copyBytes(int ofBegin,
                      int ofEnd,
                      byte[] abDest,
                      int ofDest)
Copies bytes from this ReadBuffer into the destination byte array.

The first byte to be copied is at offset ofBegin; the last byte to be copied is at offset ofEnd-1 (thus the total number of bytes to be copied is ofEnd - ofBegin). The bytes are copied into the subarray of abDest starting at offset ofDest and ending at index:

     ofDest + (ofEnd - ofBegin) - 1
 

This method is the ReadBuffer equivalent of String.getChars(int, int, char[], int). It allows the caller to extract a chunk of bytes into the caller's own array.

Parameters:
ofBegin - offset of the first byte in the ReadBuffer to copy
ofEnd - offset after the last byte in the ReadBuffer to copy
abDest - the destination byte array
ofDest - the offset in the destination byte array to copy the first byte to

instantiateReadBuffer

protected ReadBuffer instantiateReadBuffer(int of,
                                           int cb)
Factory method: Instantiate a ReadBuffer for a portion of this ReadBuffer.

Specified by:
instantiateReadBuffer in class AbstractReadBuffer
Parameters:
of - the beginning index, inclusive
cb - the number of bytes to include in the resulting ReadBuffer
Returns:
a ReadBuffer that represents a portion of this ReadBuffer

instantiateBufferInput

protected ReadBuffer.BufferInput instantiateBufferInput()
Factory method: Instantiate a BufferInput object to read data from the ReadBuffer.

Overrides:
instantiateBufferInput in class AbstractReadBuffer
Returns:
a new BufferInput reading from this ReadBuffer

getBufferCount

protected int getBufferCount()
Determine the number of ReadBuffer objects that contain the data presented by this MultiBufferReadBuffer.

Returns:
the count of underlying ReadBuffer objects

getBufferOffset

protected int getBufferOffset(int iBuffer)
Determine the offset of the specified buffer. The offset of a buffer is the absolute offset of the first byte stored in the buffer.

Parameters:
iBuffer - an index 0 <= iBuffer < getBufferCount()
Returns:
the absolute offset of the first byte of the specified ReadBuffer

getBuffer

protected ReadBuffer getBuffer(int iBuffer)
Obtain the specified buffer.

Parameters:
iBuffer - an index 0 <= iBuffer < getBufferCount()
Returns:
the specified ReadBuffer

getBufferIndexByOffset

protected int getBufferIndexByOffset(int of)
Determine which underlying ReadBuffer contains the specified offset.

Parameters:
of - an offset into this MultiBufferReadBuffer
Returns:
the index of the ReadBuffer containing the specified offset

CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation