## org.hornetq.api.core
Interface HornetQBuffer

    public interface HornetQBuffer

A HornetQBuffer wraps a Netty's ChannelBuffer and is used throughout HornetQ code base. Much of it derived from Netty ChannelBuffer by Trustin Lee

Author:
  Tim Fox
See Also:
  `HornetQBuffers`

Method Summary
`int` `capacity()` Returns the number of bytes this buffer can contain.
`org.jboss.netty.buffer.ChannelBuffer` `channelBuffer()` Returns the underlying Netty's ChannelBuffer
`void` `clear()` Sets the `readerIndex` and `writerIndex` of this buffer to `0`.
`HornetQBuffer` `copy()` Returns a copy of this buffer's readable bytes.
`HornetQBuffer` `copy(int index, int length)` Returns a copy of this buffer's sub-region.
`void` `discardReadBytes()` Discards the bytes between the 0th index and `readerIndex`.
`HornetQBuffer` `duplicate()` Returns a buffer which shares the whole region of this buffer.
`byte` `getByte(int index)` Gets a byte at the specified absolute `index` in this buffer.
`void` `getBytes(int index, byte[] dst)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
`void` `getBytes(int index, byte[] dst, int dstIndex, int length)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
`void` `getBytes(int index, ByteBuffer dst)` Transfers this buffer's data to the specified destination starting at the specified absolute `index` until the destination's position reaches its limit.
`void` `getBytes(int index, HornetQBuffer dst)` Transfers this buffer's data to the specified destination starting at the specified absolute `index` until the destination becomes non-writable.
`void` `getBytes(int index, HornetQBuffer dst, int length)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
`void` `getBytes(int index, HornetQBuffer dst, int dstIndex, int length)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
`char` `getChar(int index)` Gets a char at the specified absolute `index` in this buffer.
`double` `getDouble(int index)` Gets a double at the specified absolute `index` in this buffer.
`float` `getFloat(int index)` Gets a float at the specified absolute `index` in this buffer.
`int` `getInt(int index)` Gets a 32-bit integer at the specified absolute `index` in this buffer.
`long` `getLong(int index)` Gets a 64-bit long integer at the specified absolute `index` in this buffer.
`short` `getShort(int index)` Gets a 16-bit short integer at the specified absolute `index` in this buffer.
`short` `getUnsignedByte(int index)` Gets an unsigned byte at the specified absolute `index` in this buffer.
`long` `getUnsignedInt(int index)` Gets an unsigned 32-bit integer at the specified absolute `index` in this buffer.
`int` `getUnsignedShort(int index)` Gets an unsigned 16-bit short integer at the specified absolute `index` in this buffer.
`void` `markReaderIndex()` Marks the current `readerIndex` in this buffer.
`void` `markWriterIndex()` Marks the current `writerIndex` in this buffer.
`boolean` `readable()` Returns `true` if and only if `(this.writerIndex - this.readerIndex)` is greater than `0`.
`int` `readableBytes()` Returns the number of readable bytes which is equal to `(this.writerIndex - this.readerIndex)`.
`boolean` `readBoolean()` Gets a boolean at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.
`byte` `readByte()` Gets a byte at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.
`void` `readBytes(byte[] dst)` Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `dst.length`).
`void` `readBytes(byte[] dst, int dstIndex, int length)` Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`).
`void` `readBytes(ByteBuffer dst)` Transfers this buffer's data to the specified destination starting at the current `readerIndex` until the destination's position reaches its limit, and increases the `readerIndex` by the number of the transferred bytes.
`void` `readBytes(HornetQBuffer dst)` Transfers this buffer's data to the specified destination starting at the current `readerIndex` until the destination becomes non-writable, and increases the `readerIndex` by the number of the transferred bytes.
`void` `readBytes(HornetQBuffer dst, int length)` Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`).
`void` `readBytes(HornetQBuffer dst, int dstIndex, int length)` Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`).
`HornetQBuffer` `readBytes(int length)` Transfers this buffer's data to a newly created buffer starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`).
`char` `readChar()` Gets a char at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.
`double` `readDouble()` Gets a double at the current `readerIndex` and increases the `readerIndex` by `8` in this buffer.
`int` `readerIndex()` Returns the `readerIndex` of this buffer.
`void` `readerIndex(int readerIndex)` Sets the `readerIndex` of this buffer.
`float` `readFloat()` Gets a float at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.
`int` `readInt()` Gets a 32-bit integer at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.
`long` `readLong()` Gets a 64-bit integer at the current `readerIndex` and increases the `readerIndex` by `8` in this buffer.
`SimpleString` `readNullableSimpleString()` Gets a SimpleString (potentially `null`) at the current `readerIndex`
`String` `readNullableString()` Gets a String (potentially `null`) at the current `readerIndex`
`short` `readShort()` Gets a 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.
`SimpleString` `readSimpleString()` Gets a non-null SimpleString at the current `readerIndex`
`HornetQBuffer` `readSlice(int length)` Returns a new slice of this buffer's sub-region starting at the current `readerIndex` and increases the `readerIndex` by the size of the new slice (= `length`).
`String` `readString()` Gets a non-null String at the current `readerIndex`
`short` `readUnsignedByte()` Gets an unsigned byte at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.
`long` `readUnsignedInt()` Gets an unsigned 32-bit integer at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.
`int` `readUnsignedShort()` Gets an unsigned 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.
`String` `readUTF()` Gets a UTF-8 String at the current `readerIndex`
`void` `resetReaderIndex()` Repositions the current `readerIndex` to the marked `readerIndex` in this buffer.
`void` `resetWriterIndex()` Repositions the current `writerIndex` to the marked `writerIndex` in this buffer.
`void` `setByte(int index, byte value)` Sets the specified byte at the specified absolute `index` in this buffer.
`void` `setBytes(int index, byte[] src)` Transfers the specified source array's data to this buffer starting at the specified absolute `index`.
`void` `setBytes(int index, byte[] src, int srcIndex, int length)` Transfers the specified source array's data to this buffer starting at the specified absolute `index`.
`void` `setBytes(int index, ByteBuffer src)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index` until the source buffer's position reaches its limit.
`void` `setBytes(int index, HornetQBuffer src)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index` until the destination becomes unreadable.
`void` `setBytes(int index, HornetQBuffer src, int length)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index`.
`void` `setBytes(int index, HornetQBuffer src, int srcIndex, int length)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index`.
`void` `setChar(int index, char value)` Sets the specified char at the specified absolute `index` in this buffer.
`void` `setDouble(int index, double value)` Sets the specified double at the specified absolute `index` in this buffer.
`void` `setFloat(int index, float value)` Sets the specified float at the specified absolute `index` in this buffer.
`void` `setIndex(int readerIndex, int writerIndex)` Sets the `readerIndex` and `writerIndex` of this buffer in one shot.
`void` `setInt(int index, int value)` Sets the specified 32-bit integer at the specified absolute `index` in this buffer.
`void` `setLong(int index, long value)` Sets the specified 64-bit long integer at the specified absolute `index` in this buffer.
`void` `setShort(int index, short value)` Sets the specified 16-bit short integer at the specified absolute `index` in this buffer.
`void` `skipBytes(int length)` Increases the current `readerIndex` by the specified `length` in this buffer.
`HornetQBuffer` `slice()` Returns a slice of this buffer's readable bytes.
`HornetQBuffer` `slice(int index, int length)` Returns a slice of this buffer's sub-region.
`ByteBuffer` `toByteBuffer()` Converts this buffer's readable bytes into a NIO buffer.
`ByteBuffer` `toByteBuffer(int index, int length)` Converts this buffer's sub-region into a NIO buffer.
`boolean` `writable()` Returns `true` if and only if `(this.capacity - this.writerIndex)` is greater than `0`.
`int` `writableBytes()` Returns the number of writable bytes which is equal to `(this.capacity - this.writerIndex)`.
`void` `writeBoolean(boolean val)` Sets the specified boolean at the current `writerIndex`
`void` `writeByte(byte value)` Sets the specified byte at the current `writerIndex` and increases the `writerIndex` by `1` in this buffer.
`void` `writeBytes(byte[] src)` Transfers the specified source array's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `src.length`).
`void` `writeBytes(byte[] src, int srcIndex, int length)` Transfers the specified source array's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `length`).
`void` `writeBytes(ByteBuffer src)` Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` until the source buffer's position reaches its limit, and increases the `writerIndex` by the number of the transferred bytes.
`void` `writeBytes(HornetQBuffer src, int length)` Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `length`).
`void` `writeBytes(HornetQBuffer src, int srcIndex, int length)` Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `length`).
`void` `writeChar(char chr)` Sets the specified char at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer.
`void` `writeDouble(double value)` Sets the specified double at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.
`void` `writeFloat(float value)` Sets the specified float at the current `writerIndex` and increases the `writerIndex` by `4` in this buffer.
`void` `writeInt(int value)` Sets the specified 32-bit integer at the current `writerIndex` and increases the `writerIndex` by `4` in this buffer.
`void` `writeLong(long value)` Sets the specified 64-bit long integer at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.
`void` `writeNullableSimpleString(SimpleString val)` Sets the specified SimpleString (potentially `null`) at the current `writerIndex`
`void` `writeNullableString(String val)` Sets the specified String (potentially `null`) at the current `writerIndex`
`int` `writerIndex()` Returns the `writerIndex` of this buffer.
`void` `writerIndex(int writerIndex)` Sets the `writerIndex` of this buffer.
`void` `writeShort(short value)` Sets the specified 16-bit short integer at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer.
`void` `writeSimpleString(SimpleString val)` Sets the specified non-null SimpleString at the current `writerIndex`
`void` `writeString(String val)` Sets the specified non-null String at the current `writerIndex`
`void` `writeUTF(String utf)` Sets the specified UTF-8 String at the current `writerIndex`

Method Detail

### channelBuffer

    org.jboss.netty.buffer.ChannelBuffer channelBuffer()

  Returns the underlying Netty's ChannelBuffer

  Returns:
    the underlying Netty's ChannelBuffer

### capacity

    int capacity()

  Returns the number of bytes this buffer can contain.

### readerIndex

    int readerIndex()

  Returns the `readerIndex` of this buffer.

### readerIndex

    void readerIndex(int readerIndex)

  Sets the `readerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `readerIndex` is less than `0` or greater than `this.writerIndex`

### writerIndex

    int writerIndex()

  Returns the `writerIndex` of this buffer.

### writerIndex

    void writerIndex(int writerIndex)

  Sets the `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `writerIndex` is less than `this.readerIndex` or greater than `this.capacity`

### setIndex

    void setIndex(int readerIndex,
                  int writerIndex)

  Sets the `readerIndex` and `writerIndex` of this buffer in one shot. This method is useful when you have to worry about the invocation order of `readerIndex(int)` and `writerIndex(int)` methods. For example, the following code will fail:

       // Create a buffer whose readerIndex, writerIndex and capacity are
       // 0, 0 and 8 respectively.
       ChannelBuffer buf = ChannelBuffers.buffer(8);

       // IndexOutOfBoundsException is thrown because the specified
       // readerIndex (2) cannot be greater than the current writerIndex (0).
       buf.readerIndex(2);
       buf.writerIndex(4);

  The following code will also fail:

       // Create a buffer whose readerIndex, writerIndex and capacity are
       // 0, 8 and 8 respectively.
       ChannelBuffer buf = ChannelBuffers.wrappedBuffer(new byte[8]);

       // readerIndex becomes 8.
       buf.readLong();

       // IndexOutOfBoundsException is thrown because the specified
       // writerIndex (4) cannot be less than the current readerIndex (8).
       buf.writerIndex(4);
       buf.readerIndex(2);

  By contrast, `setIndex(int, int)` guarantees that it never throws an `IndexOutOfBoundsException` as long as the specified indexes meet basic constraints, regardless what the current index values of the buffer are:

       // No matter what the current state of the buffer is, the following
       // call always succeeds as long as the capacity of the buffer is not
       // less than 4.
       buf.setIndex(2, 4);

  Throws:
    `IndexOutOfBoundsException` - if the specified `readerIndex` is less than 0, if the specified `writerIndex` is less than the specified `readerIndex` or if the specified `writerIndex` is greater than `this.capacity`

### readableBytes

    int readableBytes()

  Returns the number of readable bytes which is equal to `(this.writerIndex - this.readerIndex)`.

### writableBytes

    int writableBytes()

  Returns the number of writable bytes which is equal to `(this.capacity - this.writerIndex)`.

### readable

    boolean readable()

  Returns `true` if and only if `(this.writerIndex - this.readerIndex)` is greater than `0`.

### writable

    boolean writable()

  Returns `true` if and only if `(this.capacity - this.writerIndex)` is greater than `0`.

### clear

    void clear()

  Sets the `readerIndex` and `writerIndex` of this buffer to `0`. This method is identical to `setIndex(0, 0)`.

  Please note that the behavior of this method is different from that of NIO buffer, which sets the `limit` to the `capacity` of the buffer.

### markReaderIndex

    void markReaderIndex()

  Marks the current `readerIndex` in this buffer. You can reposition the current `readerIndex` to the marked `readerIndex` by calling `resetReaderIndex()`. The initial value of the marked `readerIndex` is `0`.

### resetReaderIndex

    void resetReaderIndex()

  Repositions the current `readerIndex` to the marked `readerIndex` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the current `writerIndex` is less than the marked `readerIndex`

### markWriterIndex

    void markWriterIndex()

  Marks the current `writerIndex` in this buffer. You can reposition the current `writerIndex` to the marked `writerIndex` by calling `resetWriterIndex()`. The initial value of the marked `writerIndex` is `0`.

### resetWriterIndex

    void resetWriterIndex()

  Repositions the current `writerIndex` to the marked `writerIndex` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the current `readerIndex` is greater than the marked `writerIndex`

### discardReadBytes

    void discardReadBytes()

  Discards the bytes between the 0th index and `readerIndex`. It moves the bytes between `readerIndex` and `writerIndex` to the 0th index, and sets `readerIndex` and `writerIndex` to `0` and `oldWriterIndex - oldReaderIndex` respectively.

  Please refer to the class documentation for more detailed explanation.

### getByte

    byte getByte(int index)

  Gets a byte at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 1` is greater than `this.capacity`

### getUnsignedByte

    short getUnsignedByte(int index)

  Gets an unsigned byte at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 1` is greater than `this.capacity`

### getShort

    short getShort(int index)

  Gets a 16-bit short integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 2` is greater than `this.capacity`

### getUnsignedShort

    int getUnsignedShort(int index)

  Gets an unsigned 16-bit short integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 2` is greater than `this.capacity`

### getInt

    int getInt(int index)

  Gets a 32-bit integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 4` is greater than `this.capacity`

### getUnsignedInt

    long getUnsignedInt(int index)

  Gets an unsigned 32-bit integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 4` is greater than `this.capacity`

### getLong

    long getLong(int index)

  Gets a 64-bit long integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 8` is greater than `this.capacity`

### getBytes

    void getBytes(int index,
                  HornetQBuffer dst)

  Transfers this buffer's data to the specified destination starting at the specified absolute `index` until the destination becomes non-writable. This method is basically same with `getBytes(int, HornetQBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes while `getBytes(int, HornetQBuffer, int, int)` does not. This method does not modify `readerIndex` or `writerIndex` of the source buffer (i.e. `this`).

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or if `index + dst.writableBytes` is greater than `this.capacity`

### getBytes

    void getBytes(int index,
                  HornetQBuffer dst,
                  int length)

  Transfers this buffer's data to the specified destination starting at the specified absolute `index`. This method is basically same with `getBytes(int, HornetQBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes while `getBytes(int, HornetQBuffer, int, int)` does not. This method does not modify `readerIndex` or `writerIndex` of the source buffer (i.e. `this`).

  Parameters:
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0`, if `index + length` is greater than `this.capacity`, or if `length` is greater than `dst.writableBytes`

### getBytes

    void getBytes(int index,
                  HornetQBuffer dst,
                  int dstIndex,
                  int length)

  Transfers this buffer's data to the specified destination starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of both the source (i.e. `this`) and the destination.

  Parameters:
    `dstIndex` - the first index of the destination
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0`, if the specified `dstIndex` is less than `0`, if `index + length` is greater than `this.capacity`, or if `dstIndex + length` is greater than `dst.capacity`

### getBytes

    void getBytes(int index,
                  byte[] dst)

  Transfers this buffer's data to the specified destination starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or if `index + dst.length` is greater than `this.capacity`

### getBytes

    void getBytes(int index,
                  byte[] dst,
                  int dstIndex,
                  int length)

  Transfers this buffer's data to the specified destination starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Parameters:
    `dstIndex` - the first index of the destination
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0`, if the specified `dstIndex` is less than `0`, if `index + length` is greater than `this.capacity`, or if `dstIndex + length` is greater than `dst.length`

### getBytes

    void getBytes(int index,
                  ByteBuffer dst)

  Transfers this buffer's data to the specified destination starting at the specified absolute `index` until the destination's position reaches its limit. This method does not modify `readerIndex` or `writerIndex` of this buffer while the destination's `position` will be increased.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or if `index + dst.remaining()` is greater than `this.capacity`

### getChar

    char getChar(int index)

  Gets a char at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 2` is greater than `this.capacity`

### getFloat

    float getFloat(int index)

  Gets a float at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 4` is greater than `this.capacity`

### getDouble

    double getDouble(int index)

  Gets a double at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 8` is greater than `this.capacity`

### setByte

    void setByte(int index,
                 byte value)

  Sets the specified byte at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 1` is greater than `this.capacity`

### setShort

    void setShort(int index,
                  short value)

  Sets the specified 16-bit short integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 2` is greater than `this.capacity`

### setInt

    void setInt(int index,
                int value)

  Sets the specified 32-bit integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 4` is greater than `this.capacity`

### setLong

    void setLong(int index,
                 long value)

  Sets the specified 64-bit long integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 8` is greater than `this.capacity`

### setBytes

    void setBytes(int index,
                  HornetQBuffer src)

  Transfers the specified source buffer's data to this buffer starting at the specified absolute `index` until the destination becomes unreadable. This method is basically same with `setBytes(int, HornetQBuffer, int, int)`, except that this method increases the `readerIndex` of the source buffer by the number of the transferred bytes while `getBytes(int, HornetQBuffer, int, int)` does not. This method does not modify `readerIndex` or `writerIndex` of the source buffer (i.e. `this`).

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or if `index + src.readableBytes` is greater than `this.capacity`

### setBytes

    void setBytes(int index,
                  HornetQBuffer src,
                  int length)

  Transfers the specified source buffer's data to this buffer starting at the specified absolute `index`. This method is basically same with `setBytes(int, HornetQBuffer, int, int)`, except that this method increases the `readerIndex` of the source buffer by the number of the transferred bytes while `getBytes(int, HornetQBuffer, int, int)` does not. This method does not modify `readerIndex` or `writerIndex` of the source buffer (i.e. `this`).

  Parameters:
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0`, if `index + length` is greater than `this.capacity`, or if `length` is greater than `src.readableBytes`

### setBytes

    void setBytes(int index,
                  HornetQBuffer src,
                  int srcIndex,
                  int length)

  Transfers the specified source buffer's data to this buffer starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of both the source (i.e. `this`) and the destination.

  Parameters:
    `srcIndex` - the first index of the source
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0`, if the specified `srcIndex` is less than `0`, if `index + length` is greater than `this.capacity`, or if `srcIndex + length` is greater than `src.capacity`

### setBytes

    void setBytes(int index,
                  byte[] src)

  Transfers the specified source array's data to this buffer starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or if `index + src.length` is greater than `this.capacity`

### setBytes

    void setBytes(int index,
                  byte[] src,
                  int srcIndex,
                  int length)

  Transfers the specified source array's data to this buffer starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0`, if the specified `srcIndex` is less than `0`, if `index + length` is greater than `this.capacity`, or if `srcIndex + length` is greater than `src.length`

### setBytes

    void setBytes(int index,
                  ByteBuffer src)

  Transfers the specified source buffer's data to this buffer starting at the specified absolute `index` until the source buffer's position reaches its limit. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or if `index + src.remaining()` is greater than `this.capacity`

### setChar

    void setChar(int index,
                 char value)

  Sets the specified char at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 2` is greater than `this.capacity`

### setFloat

    void setFloat(int index,
                  float value)

  Sets the specified float at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 4` is greater than `this.capacity`

### setDouble

    void setDouble(int index,
                   double value)

  Sets the specified double at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

  Throws:
    `IndexOutOfBoundsException` - if the specified `index` is less than `0` or `index + 8` is greater than `this.capacity`

### readByte

    byte readByte()

  Gets a byte at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `1`

### readUnsignedByte

    short readUnsignedByte()

  Gets an unsigned byte at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `1`

### readShort

    short readShort()

  Gets a 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `2`

### readUnsignedShort

    int readUnsignedShort()

  Gets an unsigned 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `2`

### readInt

    int readInt()

  Gets a 32-bit integer at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `4`

### readUnsignedInt

    long readUnsignedInt()

  Gets an unsigned 32-bit integer at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `4`

### readLong

    long readLong()

  Gets a 64-bit integer at the current `readerIndex` and increases the `readerIndex` by `8` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `8`

### readChar

    char readChar()

  Gets a char at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `2`

### readFloat

    float readFloat()

  Gets a float at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `4`

### readDouble

    double readDouble()

  Gets a double at the current `readerIndex` and increases the `readerIndex` by `8` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `8`

### readBoolean

    boolean readBoolean()

  Gets a boolean at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.readableBytes` is less than `1`

### readNullableSimpleString

    SimpleString readNullableSimpleString()

  Gets a SimpleString (potentially `null`) at the current `readerIndex`

### readNullableString

    String readNullableString()

  Gets a String (potentially `null`) at the current `readerIndex`

### readSimpleString

    SimpleString readSimpleString()

  Gets a non-null SimpleString at the current `readerIndex`

### readString

    String readString()

  Gets a non-null String at the current `readerIndex`

### readUTF

    String readUTF()

  Gets a UTF-8 String at the current `readerIndex`

### readBytes

    HornetQBuffer readBytes(int length)

  Transfers this buffer's data to a newly created buffer starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`). The returned buffer's `readerIndex` and `writerIndex` are `0` and `length` respectively.

  Parameters:
    `length` - the number of bytes to transfer
  Returns:
    the newly created buffer which contains the transferred bytes
  Throws:
    `IndexOutOfBoundsException` - if `length` is greater than `this.readableBytes`

### readSlice

    HornetQBuffer readSlice(int length)

  Returns a new slice of this buffer's sub-region starting at the current `readerIndex` and increases the `readerIndex` by the size of the new slice (= `length`).

  Parameters:
    `length` - the size of the new slice
  Returns:
    the newly created slice
  Throws:
    `IndexOutOfBoundsException` - if `length` is greater than `this.readableBytes`

### readBytes

    void readBytes(HornetQBuffer dst)

  Transfers this buffer's data to the specified destination starting at the current `readerIndex` until the destination becomes non-writable, and increases the `readerIndex` by the number of the transferred bytes. This method is basically same with `readBytes(HornetQBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes while `readBytes(HornetQBuffer, int, int)` does not.

  Throws:
    `IndexOutOfBoundsException` - if `dst.writableBytes` is greater than `this.readableBytes`

### readBytes

    void readBytes(HornetQBuffer dst,
                   int length)

  Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`). This method is basically same with `readBytes(HornetQBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes (= `length`) while `readBytes(HornetQBuffer, int, int)` does not.

  Throws:
    `IndexOutOfBoundsException` - if `length` is greater than `this.readableBytes` or if `length` is greater than `dst.writableBytes`

### readBytes

    void readBytes(HornetQBuffer dst,
                   int dstIndex,
                   int length)

  Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`).

  Parameters:
    `dstIndex` - the first index of the destination
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `dstIndex` is less than `0`, if `length` is greater than `this.readableBytes`, or if `dstIndex + length` is greater than `dst.capacity`

### readBytes

    void readBytes(byte[] dst)

  Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `dst.length`).

  Throws:
    `IndexOutOfBoundsException` - if `dst.length` is greater than `this.readableBytes`

### readBytes

    void readBytes(byte[] dst,
                   int dstIndex,
                   int length)

  Transfers this buffer's data to the specified destination starting at the current `readerIndex` and increases the `readerIndex` by the number of the transferred bytes (= `length`).

  Parameters:
    `dstIndex` - the first index of the destination
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `dstIndex` is less than `0`, if `length` is greater than `this.readableBytes`, or if `dstIndex + length` is greater than `dst.length`

### readBytes

    void readBytes(ByteBuffer dst)

  Transfers this buffer's data to the specified destination starting at the current `readerIndex` until the destination's position reaches its limit, and increases the `readerIndex` by the number of the transferred bytes.

  Throws:
    `IndexOutOfBoundsException` - if `dst.remaining()` is greater than `this.readableBytes`

### skipBytes

    void skipBytes(int length)

  Increases the current `readerIndex` by the specified `length` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `length` is greater than `this.readableBytes`

### writeByte

    void writeByte(byte value)

  Sets the specified byte at the current `writerIndex` and increases the `writerIndex` by `1` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `1`

### writeShort

    void writeShort(short value)

  Sets the specified 16-bit short integer at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `2`

### writeInt

    void writeInt(int value)

  Sets the specified 32-bit integer at the current `writerIndex` and increases the `writerIndex` by `4` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `4`

### writeLong

    void writeLong(long value)

  Sets the specified 64-bit long integer at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `8`

### writeChar

    void writeChar(char chr)

  Sets the specified char at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `2`

### writeFloat

    void writeFloat(float value)

  Sets the specified float at the current `writerIndex` and increases the `writerIndex` by `4` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `4`

### writeDouble

    void writeDouble(double value)

  Sets the specified double at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.

  Throws:
    `IndexOutOfBoundsException` - if `this.writableBytes` is less than `8`

### writeBoolean

    void writeBoolean(boolean val)

  Sets the specified boolean at the current `writerIndex`

### writeNullableSimpleString

    void writeNullableSimpleString(SimpleString val)

  Sets the specified SimpleString (potentially `null`) at the current `writerIndex`

### writeNullableString

    void writeNullableString(String val)

  Sets the specified String (potentially `null`) at the current `writerIndex`

### writeSimpleString

    void writeSimpleString(SimpleString val)

  Sets the specified non-null SimpleString at the current `writerIndex`

### writeString

    void writeString(String val)

  Sets the specified non-null String at the current `writerIndex`

### writeUTF

    void writeUTF(String utf)

  Sets the specified UTF-8 String at the current `writerIndex`

### writeBytes

    void writeBytes(HornetQBuffer src,
                    int length)

  Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `length`). This method is basically same with `writeBytes(HornetQBuffer, int, int)`, except that this method increases the `readerIndex` of the source buffer by the number of the transferred bytes (= `length`) while `writeBytes(HornetQBuffer, int, int)` does not.

  Parameters:
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if `length` is greater than `this.writableBytes` or if `length` is greater then `src.readableBytes`

### writeBytes

    void writeBytes(HornetQBuffer src,
                    int srcIndex,
                    int length)

  Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `length`).

  Parameters:
    `srcIndex` - the first index of the source
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `srcIndex` is less than `0`, if `srcIndex + length` is greater than `src.capacity`, or if `length` is greater than `this.writableBytes`

### writeBytes

    void writeBytes(byte[] src)

  Transfers the specified source array's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `src.length`).

  Throws:
    `IndexOutOfBoundsException` - if `src.length` is greater than `this.writableBytes`

### writeBytes

    void writeBytes(byte[] src,
                    int srcIndex,
                    int length)

  Transfers the specified source array's data to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes (= `length`).

  Parameters:
    `srcIndex` - the first index of the source
    `length` - the number of bytes to transfer
  Throws:
    `IndexOutOfBoundsException` - if the specified `srcIndex` is less than `0`, if `srcIndex + length` is greater than `src.length`, or if `length` is greater than `this.writableBytes`

### writeBytes

    void writeBytes(ByteBuffer src)

  Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` until the source buffer's position reaches its limit, and increases the `writerIndex` by the number of the transferred bytes.

  Throws:
    `IndexOutOfBoundsException` - if `src.remaining()` is greater than `this.writableBytes`

### copy

    HornetQBuffer copy()

  Returns a copy of this buffer's readable bytes. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method is identical to `buf.copy(buf.readerIndex(), buf.readableBytes())`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

### copy

    HornetQBuffer copy(int index,
                       int length)

  Returns a copy of this buffer's sub-region. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method does not modify `readerIndex` or `writerIndex` of this buffer.

### slice

    HornetQBuffer slice()

  Returns a slice of this buffer's readable bytes. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical to `buf.slice(buf.readerIndex(), buf.readableBytes())`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

### slice

    HornetQBuffer slice(int index,
                        int length)

  Returns a slice of this buffer's sub-region. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method does not modify `readerIndex` or `writerIndex` of this buffer.

### duplicate

    HornetQBuffer duplicate()

  Returns a buffer which shares the whole region of this buffer. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical to `buf.slice(0, buf.capacity())`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

### toByteBuffer

    ByteBuffer toByteBuffer()

  Converts this buffer's readable bytes into a NIO buffer. The returned buffer might or might not share the content with this buffer, while they have separate indexes and marks. This method is identical to `buf.toByteBuffer(buf.readerIndex(), buf.readableBytes())`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

### toByteBuffer

    ByteBuffer toByteBuffer(int index,
                            int length)

  Converts this buffer's sub-region into a NIO buffer. The returned buffer might or might not share the content with this buffer, while they have separate indexes and marks. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Copyright © 2009 Red Hat Inc. All Rights Reserved.