Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


com.tangosol.io
Class AbstractByteArrayReadBuffer

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.io.AbstractReadBuffer
          extended by com.tangosol.io.AbstractByteArrayReadBuffer

All Implemented Interfaces:
ReadBuffer, ByteSequence, java.lang.Cloneable
Direct Known Subclasses:
Binary, ByteArrayReadBuffer

public abstract class AbstractByteArrayReadBuffer
extends AbstractReadBuffer

The AbstractByteArrayReadBuffer abstract class is intended to serve as a base class for the following:

  1. the pre-existing Binary class
  2. a new byte[] based class that does not attempt to add the immutability aspect provided by the Binary class
  3. a new ByteBuffer based class that will work with Java NIO

This implementation is not intended to be thread safe.

Author:
cp 2005.01.18

Nested Class Summary
 class AbstractByteArrayReadBuffer.ByteArrayBufferInput
          This is a simple implementation of the BufferInput interface on top of a byte array.

 

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
protected  byte[] m_ab
          The byte array that holds the binary data.
protected  int m_cb
          Number of bytes in the byte array that belong to this ReadBuffer object.
protected  int m_of
          Offset into the byte array at which the binary data is located.

 

Fields inherited from class com.tangosol.io.AbstractReadBuffer
NO_BINARY, NO_BYTES

 

Constructor Summary
protected AbstractByteArrayReadBuffer()
          Default constructor; intended for deserialization use by subclasses.
protected AbstractByteArrayReadBuffer(byte[] ab, int of, int cb)
          Construct an AbstractByteArrayReadBuffer on a portion of a byte array.

 

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.
 boolean equals(java.lang.Object o)
          Compare two ReadBuffer objects for equality.
protected  ReadBuffer.BufferInput instantiateBufferInput()
          Factory method: Instantiate a BufferInput object to read data from the ReadBuffer.
protected abstract  boolean isByteArrayPrivate()
          Determine if the underlying byte[] should be treated as private data.
 int length()
          Determine the length of the buffer.
protected  void resetRange(int of, int cb)
          Reset the portion of the byte array the ReadBuffer operates upon.
 Binary toBinary()
          Returns a new Binary object that holds the complete contents of this ReadBuffer.
 Binary toBinary(int of, int cb)
          Returns a Binary object that holds the specified portion of this ReadBuffer.
 byte[] toByteArray(int of, int cb)
          Get a portion of the contents of the ReadBuffer as a byte array.

 

Methods inherited from class com.tangosol.io.AbstractReadBuffer
checkBounds, clone, getBufferInput, getReadBuffer, instantiateReadBuffer, subSequence, toByteArray

 

Field Detail

m_ab

protected byte[] m_ab
The byte array that holds the binary data. This value should not be changed.

m_of

protected int m_of
Offset into the byte array at which the binary data is located. This value should not be changed.

m_cb

protected int m_cb
Number of bytes in the byte array that belong to this ReadBuffer object. This value should not be changed.

Constructor Detail

AbstractByteArrayReadBuffer

protected AbstractByteArrayReadBuffer()
Default constructor; intended for deserialization use by subclasses.

Note that this default constructor leaves the buffer in an invalid state.


AbstractByteArrayReadBuffer

protected AbstractByteArrayReadBuffer(byte[] ab,
                                      int of,
                                      int cb)
Construct an AbstractByteArrayReadBuffer on a portion of a byte array.
Parameters:
ab - a byte array
of - an offset into the byte array
cb - the number of bytes to utilize
Throws:
java.lang.IndexOutOfBoundsException - if of or cb is negative, or of + cb is larger than ab.length
java.lang.NullPointerException - if ab is null

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

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()
Returns a new Binary object that holds the complete contents of this ReadBuffer.

This is the equivalent of toBinary(0, length()).

Specified by:
toBinary in interface ReadBuffer
Specified by:
toBinary in interface ByteSequence
Overrides:
toBinary in class AbstractReadBuffer
Returns:
the contents of this ReadBuffer as a Binary object

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

equals

public boolean equals(java.lang.Object o)
Compare two ReadBuffer objects for equality.
Specified by:
equals in interface ReadBuffer
Overrides:
equals in class AbstractReadBuffer
Parameters:
o - a ReadBuffer object
Returns:
true iff the other ReadBuffer is identical to this

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

resetRange

protected void resetRange(int of,
                          int cb)
Reset the portion of the byte array the ReadBuffer operates upon.
Parameters:
of - an offset into the byte array
cb - the number of bytes to utilize
Throws:
java.lang.IndexOutOfBoundsException - if of or cb are negative, or of + cb is larger than the buffer's length

isByteArrayPrivate

protected abstract boolean isByteArrayPrivate()
Determine if the underlying byte[] should be treated as private data.
Returns:
true iff the underlying data should not ever be exposed by this object

Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


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