Class AllocatedBuffer

java.lang.Object
com.google.protobuf.AllocatedBuffer

@ExperimentalApi abstract class AllocatedBuffer extends Object
A buffer that was allocated by a BufferAllocator. For every buffer, it is guaranteed that at least one of hasArray() or hasNioBuffer() will be true.
  • Constructor Details

    • AllocatedBuffer

      AllocatedBuffer()
  • Method Details

    • hasNioBuffer

      public abstract boolean hasNioBuffer()
      Indicates whether this buffer contains a backing ByteBuffer (i.e. it is safe to call nioBuffer()).
    • hasArray

      public abstract boolean hasArray()
      Indicates whether this buffer contains a backing array (i.e. it is safe to call array()).
    • nioBuffer

      public abstract ByteBuffer nioBuffer()
      Returns the ByteBuffer that backs this buffer (optional operation).

      Call hasNioBuffer() before invoking this method in order to ensure that this buffer has a backing ByteBuffer.

      Returns:
      The ByteBuffer that backs this buffer
      Throws:
      UnsupportedOperationException - If this buffer is not backed by a ByteBuffer.
    • array

      public abstract byte[] array()
      Returns the byte array that backs this buffer (optional operation).

      Call hasArray() before invoking this method in order to ensure that this buffer has an accessible backing array.

      Returns:
      The array that backs this buffer
      Throws:
      ReadOnlyBufferException - If this buffer is backed by an array but is read-only
      UnsupportedOperationException - If this buffer is not backed by an accessible array
    • arrayOffset

      public abstract int arrayOffset()
      Returns the offset within this buffer's backing array of the first element of the buffer (optional operation).

      If this buffer is backed by an array then position() corresponds to the array index position() + arrayOffset().

      Invoke the hasArray method before invoking this method in order to ensure that this buffer has an accessible backing array.

      Returns:
      The offset within this buffer's array of the first element of the buffer
      Throws:
      ReadOnlyBufferException - If this buffer is backed by an array but is read-only
      UnsupportedOperationException - If this buffer is not backed by an accessible array
    • position

      public abstract int position()
      Returns this buffer's position.
      Returns:
      The position of this buffer
    • position

      public abstract AllocatedBuffer position(int position)
      Sets this buffer's position.
      Parameters:
      position - The new position value; must be non-negative and no larger than the current limit
      Returns:
      This buffer
      Throws:
      IllegalArgumentException - If the preconditions on position do not hold
    • limit

      public abstract int limit()
      Returns this buffer's limit.
      Returns:
      The limit of this buffer
    • remaining

      public abstract int remaining()
      Returns the number of elements between the current position() and the limit() .
      Returns:
      The number of elements remaining in this buffer
    • wrap

      public static AllocatedBuffer wrap(byte[] bytes)
      Creates a new AllocatedBuffer that is backed by the given array. The returned buffer will have hasArray() == true, arrayOffset() == 0, position() == 0 and limit() equal to the length of bytes.
    • wrap

      public static AllocatedBuffer wrap(byte[] bytes, int offset, int length)
      Creates a new AllocatedBuffer that is backed by the given array. The returned buffer will have hasArray() == true, arrayOffset() == offset, position() == 0 and limit() == length.
    • wrap

      public static AllocatedBuffer wrap(ByteBuffer buffer)
      Creates a new AllocatedBuffer that is backed by the given ByteBuffer. The returned buffer will have hasNioBuffer() == true.
    • wrapNoCheck

      private static AllocatedBuffer wrapNoCheck(byte[] bytes, int offset, int length)