Skip navigation links

Overview | Package | Class | Tree | Index | Help
| Oracle® Coherence Java API Reference Release 3.6.1.0 E18814-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.tangosol.io
Class MultiBufferReadBuffer

`java.lang.Object
com.tangosol.util.Base
com.tangosol.io.AbstractReadBuffer
com.tangosol.io.MultiBufferReadBuffer`

All Implemented Interfaces:
  ReadBuffer, java.lang.Cloneable

      public final 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.
`ReadBuffer.BufferInput` | `getDestructiveBufferInput()` Return a self-destructing BufferInput over this Buffer.
`protected ReadBuffer.BufferInput` | `instantiateBufferInput()` Factory method: Instantiate a BufferInput object to read data from the ReadBuffer.
`protected ReadBuffer.BufferInput` | `instantiateBufferInput(boolean fDestructive)` 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.
`protected ReadBuffer` | `releaseBuffer(int iBuffer)` Release the specified buffer.
`Binary` | `toBinary(int of, int cb)` Returns a Binary object that holds the specified portion of this ReadBuffer. This is the equivalent of `getReadBuffer(of, cb).toBinary()`.
`byte[]` | `toByteArray(int of, int cb)` Get a portion of the contents of the ReadBuffer as a byte array. This is the equivalent of `getReadBuffer(of, cb).toByteArray()`.

Methods inherited from class com.tangosol.io.AbstractReadBuffer
`checkBounds, clone, equals, getBufferInput, getReadBuffer, toBinary, 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

### getDestructiveBufferInput

    public ReadBuffer.BufferInput getDestructiveBufferInput()

  Return a self-destructing BufferInput over this Buffer. As the BufferInput is advanced the individual buffer segments will be released allowing them to potentially be garbage collected.
  Returns:
    a destructed BufferInput

### 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

### toByteArray

    public byte[] toByteArray(int of,
                              int cb)

  Get a portion of the contents of the ReadBuffer as a byte array.

  This is the equivalent of `getReadBuffer(of, cb).toByteArray()`.

  Specified by:
    `toByteArray` in interface `ReadBuffer`
  Overrides:
    `toByteArray` in class `AbstractReadBuffer`
  Parameters:
    `of` - the beginning index, inclusive
    `cb` - the number of bytes to include in the resulting byte[]
  Returns:
    a byte[] containing the specified portion of this ReadBuffer

### toBinary

    public Binary toBinary(int of,
                           int cb)

  Returns a Binary object that holds the specified portion of this ReadBuffer.

  This is the equivalent of `getReadBuffer(of, cb).toBinary()`.

  Specified by:
    `toBinary` in interface `ReadBuffer`
  Overrides:
    `toBinary` in class `AbstractReadBuffer`
  Parameters:
    `of` - the beginning index, inclusive
    `cb` - the number of bytes to include in the Binary object
  Returns:
    a Binary object containing the specified portion of this ReadBuffer

### 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.
  Specified by:
    `instantiateBufferInput` in class `AbstractReadBuffer`
  Returns:
    a new BufferInput reading from this ReadBuffer

### instantiateBufferInput

    protected ReadBuffer.BufferInput instantiateBufferInput(boolean fDestructive)

  Factory method: Instantiate a BufferInput object to read data from the ReadBuffer.
  Parameters:
    `fDestructive` - true iff the BufferInput should self-destruct as it is advanced
  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

### releaseBuffer

    protected ReadBuffer releaseBuffer(int iBuffer)

  Release the specified buffer. Once released any operation requiring access to overall buffer segment maintained by said buffer will result in an error. This method allows for "destructive streaming", see #getDestructiveBufferInput()
  Parameters:
    `iBuffer` - an index `0 <= iBuffer < getBufferCount()`
  Returns:
    the released buffer

### 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

Skip navigation links

Overview | Package | Class | Tree | Index | Help
| Oracle® Coherence Java API Reference Release 3.6.1.0 E18814-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.