org.jboss.netty.buffer

## Class AbstractChannelBuffer

- java.lang.Object
- - org.jboss.netty.buffer.AbstractChannelBuffer

All Implemented Interfaces:
  Comparable<ChannelBuffer>, ChannelBuffer

Direct Known Subclasses:
  ByteBufferBackedChannelBuffer, CompositeChannelBuffer, DuplicatedChannelBuffer, DynamicChannelBuffer, HeapChannelBuffer, ReadOnlyChannelBuffer, SlicedChannelBuffer, TruncatedChannelBuffer

    public abstract class AbstractChannelBuffer
    extends Object
    implements ChannelBuffer

A skeletal implementation of a buffer.

### Constructor Summary

Constructors
Constructor and Description
`AbstractChannelBuffer()`

### Method Summary

Methods
`int` `bytesBefore(byte value)` Locates the first occurrence of the specified `value` in this buffer.
`int` `bytesBefore(ChannelBufferIndexFinder indexFinder)` Locates the first place where the specified `indexFinder` returns `true`.
`int` `bytesBefore(int length, byte value)` Locates the first occurrence of the specified `value` in this buffer.
`int` `bytesBefore(int length, ChannelBufferIndexFinder indexFinder)` Locates the first place where the specified `indexFinder` returns `true`.
`int` `bytesBefore(int index, int length, byte value)` Locates the first occurrence of the specified `value` in this buffer.
`int` `bytesBefore(int index, int length, ChannelBufferIndexFinder indexFinder)` Locates the first place where the specified `indexFinder` returns `true`.
`protected void` `checkReadableBytes(int minimumReadableBytes)` Throws an `IndexOutOfBoundsException` if the current readable bytes of this buffer is less than the specified value.
`void` `clear()` Sets the `readerIndex` and `writerIndex` of this buffer to `0`.
`int` `compareTo(ChannelBuffer that)` Compares the content of the specified buffer to the content of this buffer.
`ChannelBuffer` `copy()` Returns a copy of this buffer's readable bytes.
`void` `discardReadBytes()` Discards the bytes between the 0th index and `readerIndex`.
`void` `ensureWritableBytes(int writableBytes)` Makes sure the number of the writable bytes is equal to or greater than the specified value.
`boolean` `equals(Object o)` Determines if the content of the specified buffer is identical to the content of this array.
`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, ChannelBuffer 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, ChannelBuffer dst, int length)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
`char` `getChar(int index)` Gets a 2-byte UTF-16 character at the specified absolute `index` in this buffer.
`double` `getDouble(int index)` Gets a 64-bit floating point number at the specified absolute `index` in this buffer.
`float` `getFloat(int index)` Gets a 32-bit floating point number at the specified absolute `index` in this buffer.
`int` `getMedium(int index)` Gets a 24-bit medium 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.
`int` `hashCode()` Returns a hash code which was calculated from the content of this buffer.
`int` `indexOf(int fromIndex, int toIndex, byte value)` Locates the first occurrence of the specified `value` in this buffer.
`int` `indexOf(int fromIndex, int toIndex, ChannelBufferIndexFinder indexFinder)` Locates the first place where the specified `indexFinder` returns `true`.
`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)`.
`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(ChannelBuffer 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.
`ChannelBuffer` `readBytes(ChannelBufferIndexFinder endIndexFinder)` Deprecated.
`void` `readBytes(ChannelBuffer 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(ChannelBuffer 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`).
`int` `readBytes(GatheringByteChannel out, int length)` Transfers this buffer's data to the specified stream starting at the current `readerIndex`.
`ChannelBuffer` `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`).
`void` `readBytes(OutputStream out, int length)` Transfers this buffer's data to the specified stream starting at the current `readerIndex`.
`char` `readChar()` Gets a 2-byte UTF-16 character at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.
`double` `readDouble()` Gets a 64-bit floating point number 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 32-bit floating point number 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.
`int` `readMedium()` Gets a 24-bit medium integer at the current `readerIndex` and increases the `readerIndex` by `3` in this buffer.
`short` `readShort()` Gets a 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.
`ChannelBuffer` `readSlice(ChannelBufferIndexFinder endIndexFinder)` Deprecated.
`ChannelBuffer` `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`).
`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` `readUnsignedMedium()` Gets an unsigned 24-bit medium integer at the current `readerIndex` and increases the `readerIndex` by `3` 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.
`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` `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, ChannelBuffer src)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index` until the source buffer becomes unreadable.
`void` `setBytes(int index, ChannelBuffer src, int length)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index`.
`void` `setChar(int index, int value)` Sets the specified 2-byte UTF-16 character at the specified absolute `index` in this buffer.
`void` `setDouble(int index, double value)` Sets the specified 64-bit floating-point number at the specified absolute `index` in this buffer.
`void` `setFloat(int index, float value)` Sets the specified 32-bit floating-point number 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` `setZero(int index, int length)` Fills this buffer with `NUL (0x00)` starting at the specified absolute `index`.
`int` `skipBytes(ChannelBufferIndexFinder firstIndexFinder)` Deprecated.
`void` `skipBytes(int length)` Increases the current `readerIndex` by the specified `length` in this buffer.
`ChannelBuffer` `slice()` Returns a slice of this buffer's readable bytes.
`ByteBuffer` `toByteBuffer()` Converts this buffer's readable bytes into a NIO buffer.
`ByteBuffer[]` `toByteBuffers()` Converts this buffer's readable bytes into an array of NIO buffers.
`ByteBuffer[]` `toByteBuffers(int index, int length)` Converts this buffer's sub-region into an array of NIO buffers.
`String` `toString()` Returns the string representation of this buffer.
`String` `toString(Charset charset)` Decodes this buffer's readable bytes into a string with the specified character set name.
`String` `toString(int index, int length, Charset charset)` Decodes this buffer's sub-region into a string with the specified character set.
`String` `toString(int index, int length, String charsetName)` Deprecated.
`String` `toString(int index, int length, String charsetName, ChannelBufferIndexFinder terminatorFinder)` Deprecated.
`String` `toString(String charsetName)` Deprecated.
`String` `toString(String charsetName, ChannelBufferIndexFinder terminatorFinder)` Deprecated.
`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` `writeByte(int 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(ChannelBuffer src)` Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` until the source buffer becomes unreadable, and increases the `writerIndex` by the number of the transferred bytes.
`void` `writeBytes(ChannelBuffer 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(ChannelBuffer 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`).
`int` `writeBytes(InputStream in, int length)` Transfers the content of the specified stream to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes.
`int` `writeBytes(ScatteringByteChannel in, int length)` Transfers the content of the specified channel to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes.
`void` `writeChar(int value)` Sets the specified 2-byte UTF-16 character at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer.
`void` `writeDouble(double value)` Sets the specified 64-bit floating point number at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.
`void` `writeFloat(float value)` Sets the specified 32-bit floating point number 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` `writeMedium(int value)` Sets the specified 24-bit medium integer at the current `writerIndex` and increases the `writerIndex` by `3` in this buffer.
`int` `writerIndex()` Returns the `writerIndex` of this buffer.
`void` `writerIndex(int writerIndex)` Sets the `writerIndex` of this buffer.
`void` `writeShort(int value)` Sets the specified 16-bit short integer at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer.
`void` `writeZero(int length)` Fills this buffer with `NUL (0x00)` starting at the current `writerIndex` and increases the `writerIndex` by the specified `length`.

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.jboss.netty.buffer.ChannelBuffer

`array, arrayOffset, capacity, copy, duplicate, factory, getByte, getBytes, getBytes, getBytes, getBytes, getBytes, getInt, getLong, getShort, getUnsignedMedium, hasArray, isDirect, order, setByte, setBytes, setBytes, setBytes, setBytes, setBytes, setInt, setLong, setMedium, setShort, slice, toByteBuffer`

### Constructor Detail

#### AbstractChannelBuffer

    public AbstractChannelBuffer()

### Method Detail

#### readerIndex

    public int readerIndex()

Description copied from interface: `ChannelBuffer`
Returns the `readerIndex` of this buffer.

Specified by:
  `readerIndex` in interface `ChannelBuffer`

#### readerIndex

    public void readerIndex(int readerIndex)

Description copied from interface: `ChannelBuffer`
Sets the `readerIndex` of this buffer.

Specified by:
  `readerIndex` in interface `ChannelBuffer`

#### writerIndex

    public int writerIndex()

Description copied from interface: `ChannelBuffer`
Returns the `writerIndex` of this buffer.

Specified by:
  `writerIndex` in interface `ChannelBuffer`

#### writerIndex

    public void writerIndex(int writerIndex)

Description copied from interface: `ChannelBuffer`
Sets the `writerIndex` of this buffer.

Specified by:
  `writerIndex` in interface `ChannelBuffer`

#### setIndex

    public void setIndex(int readerIndex,
                int writerIndex)

Description copied from interface: `ChannelBuffer`
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 `ChannelBuffer.readerIndex(int)` and `ChannelBuffer.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, `ChannelBuffer.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);

Specified by:
  `setIndex` in interface `ChannelBuffer`

#### clear

    public void clear()

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `clear` in interface `ChannelBuffer`

#### readable

    public boolean readable()

Description copied from interface: `ChannelBuffer`
Returns `true` if and only if `(this.writerIndex - this.readerIndex)` is greater than `0`.

Specified by:
  `readable` in interface `ChannelBuffer`

#### writable

    public boolean writable()

Description copied from interface: `ChannelBuffer`
Returns `true` if and only if `(this.capacity - this.writerIndex)` is greater than `0`.

Specified by:
  `writable` in interface `ChannelBuffer`

#### readableBytes

    public int readableBytes()

Description copied from interface: `ChannelBuffer`
Returns the number of readable bytes which is equal to `(this.writerIndex - this.readerIndex)`.

Specified by:
  `readableBytes` in interface `ChannelBuffer`

#### writableBytes

    public int writableBytes()

Description copied from interface: `ChannelBuffer`
Returns the number of writable bytes which is equal to `(this.capacity - this.writerIndex)`.

Specified by:
  `writableBytes` in interface `ChannelBuffer`

#### markReaderIndex

    public void markReaderIndex()

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

Specified by:
  `markReaderIndex` in interface `ChannelBuffer`

#### resetReaderIndex

    public void resetReaderIndex()

Description copied from interface: `ChannelBuffer`
Repositions the current `readerIndex` to the marked `readerIndex` in this buffer.

Specified by:
  `resetReaderIndex` in interface `ChannelBuffer`

#### markWriterIndex

    public void markWriterIndex()

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

Specified by:
  `markWriterIndex` in interface `ChannelBuffer`

#### resetWriterIndex

    public void resetWriterIndex()

Description copied from interface: `ChannelBuffer`
Repositions the current `writerIndex` to the marked `writerIndex` in this buffer.

Specified by:
  `resetWriterIndex` in interface `ChannelBuffer`

#### discardReadBytes

    public void discardReadBytes()

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `discardReadBytes` in interface `ChannelBuffer`

#### ensureWritableBytes

    public void ensureWritableBytes(int writableBytes)

Description copied from interface: `ChannelBuffer`
Makes sure the number of the writable bytes is equal to or greater than the specified value. If there is enough writable bytes in this buffer, this method returns with no side effect. Otherwise:

- a non-dynamic buffer will throw an `IndexOutOfBoundsException`.
- a dynamic buffer will expand its capacity so that the number of the `writable bytes` becomes equal to or greater than the specified value. The expansion involves the reallocation of the internal buffer and consequently memory copy.

Specified by:
  `ensureWritableBytes` in interface `ChannelBuffer`
Parameters:
  `writableBytes` - the expected minimum number of writable bytes

#### getUnsignedByte

    public short getUnsignedByte(int index)

Description copied from interface: `ChannelBuffer`
Gets an unsigned byte at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `getUnsignedByte` in interface `ChannelBuffer`

#### getUnsignedShort

    public int getUnsignedShort(int index)

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `getUnsignedShort` in interface `ChannelBuffer`

#### getMedium

    public int getMedium(int index)

Description copied from interface: `ChannelBuffer`
Gets a 24-bit medium integer at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `getMedium` in interface `ChannelBuffer`

#### getUnsignedInt

    public long getUnsignedInt(int index)

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `getUnsignedInt` in interface `ChannelBuffer`

#### getChar

    public char getChar(int index)

Description copied from interface: `ChannelBuffer`
Gets a 2-byte UTF-16 character at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `getChar` in interface `ChannelBuffer`

#### getFloat

    public float getFloat(int index)

Description copied from interface: `ChannelBuffer`
Gets a 32-bit floating point number at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `getFloat` in interface `ChannelBuffer`

#### getDouble

    public double getDouble(int index)

Description copied from interface: `ChannelBuffer`
Gets a 64-bit floating point number at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `getDouble` in interface `ChannelBuffer`

#### getBytes

    public void getBytes(int index,
                byte[] dst)

Description copied from interface: `ChannelBuffer`
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

Specified by:
  `getBytes` in interface `ChannelBuffer`

#### getBytes

    public void getBytes(int index,
                ChannelBuffer dst)

Description copied from interface: `ChannelBuffer`
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 `ChannelBuffer.getBytes(int, ChannelBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes while `ChannelBuffer.getBytes(int, ChannelBuffer, int, int)` does not. This method does not modify `readerIndex` or `writerIndex` of the source buffer (i.e. `this`).

Specified by:
  `getBytes` in interface `ChannelBuffer`

#### getBytes

    public void getBytes(int index,
                ChannelBuffer dst,
                int length)

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

Specified by:
  `getBytes` in interface `ChannelBuffer`
  `length` - the number of bytes to transfer

#### setChar

    public void setChar(int index,
               int value)

Description copied from interface: `ChannelBuffer`
Sets the specified 2-byte UTF-16 character at the specified absolute `index` in this buffer. The 16 high-order bits of the specified value are ignored. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `setChar` in interface `ChannelBuffer`

#### setFloat

    public void setFloat(int index,
                float value)

Description copied from interface: `ChannelBuffer`
Sets the specified 32-bit floating-point number at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `setFloat` in interface `ChannelBuffer`

#### setDouble

    public void setDouble(int index,
                 double value)

Description copied from interface: `ChannelBuffer`
Sets the specified 64-bit floating-point number at the specified absolute `index` in this buffer. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `setDouble` in interface `ChannelBuffer`

#### setBytes

    public void setBytes(int index,
                byte[] src)

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `setBytes` in interface `ChannelBuffer`

#### setBytes

    public void setBytes(int index,
                ChannelBuffer src)

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

Specified by:
  `setBytes` in interface `ChannelBuffer`

#### setBytes

    public void setBytes(int index,
                ChannelBuffer src,
                int length)

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

Specified by:
  `setBytes` in interface `ChannelBuffer`
  `length` - the number of bytes to transfer

#### setZero

    public void setZero(int index,
               int length)

Description copied from interface: `ChannelBuffer`
Fills this buffer with `NUL (0x00)` starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `setZero` in interface `ChannelBuffer`
  `length` - the number of `NUL`s to write to the buffer

#### readByte

    public byte readByte()

Description copied from interface: `ChannelBuffer`
Gets a byte at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.

Specified by:
  `readByte` in interface `ChannelBuffer`

#### readUnsignedByte

    public short readUnsignedByte()

Description copied from interface: `ChannelBuffer`
Gets an unsigned byte at the current `readerIndex` and increases the `readerIndex` by `1` in this buffer.

Specified by:
  `readUnsignedByte` in interface `ChannelBuffer`

#### readShort

    public short readShort()

Description copied from interface: `ChannelBuffer`
Gets a 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.

Specified by:
  `readShort` in interface `ChannelBuffer`

#### readUnsignedShort

    public int readUnsignedShort()

Description copied from interface: `ChannelBuffer`
Gets an unsigned 16-bit short integer at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.

Specified by:
  `readUnsignedShort` in interface `ChannelBuffer`

#### readMedium

    public int readMedium()

Description copied from interface: `ChannelBuffer`
Gets a 24-bit medium integer at the current `readerIndex` and increases the `readerIndex` by `3` in this buffer.

Specified by:
  `readMedium` in interface `ChannelBuffer`

#### readUnsignedMedium

    public int readUnsignedMedium()

Description copied from interface: `ChannelBuffer`
Gets an unsigned 24-bit medium integer at the current `readerIndex` and increases the `readerIndex` by `3` in this buffer.

Specified by:
  `readUnsignedMedium` in interface `ChannelBuffer`

#### readInt

    public int readInt()

Description copied from interface: `ChannelBuffer`
Gets a 32-bit integer at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.

Specified by:
  `readInt` in interface `ChannelBuffer`

#### readUnsignedInt

    public long readUnsignedInt()

Description copied from interface: `ChannelBuffer`
Gets an unsigned 32-bit integer at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.

Specified by:
  `readUnsignedInt` in interface `ChannelBuffer`

#### readLong

    public long readLong()

Description copied from interface: `ChannelBuffer`
Gets a 64-bit integer at the current `readerIndex` and increases the `readerIndex` by `8` in this buffer.

Specified by:
  `readLong` in interface `ChannelBuffer`

#### readChar

    public char readChar()

Description copied from interface: `ChannelBuffer`
Gets a 2-byte UTF-16 character at the current `readerIndex` and increases the `readerIndex` by `2` in this buffer.

Specified by:
  `readChar` in interface `ChannelBuffer`

#### readFloat

    public float readFloat()

Description copied from interface: `ChannelBuffer`
Gets a 32-bit floating point number at the current `readerIndex` and increases the `readerIndex` by `4` in this buffer.

Specified by:
  `readFloat` in interface `ChannelBuffer`

#### readDouble

    public double readDouble()

Description copied from interface: `ChannelBuffer`
Gets a 64-bit floating point number at the current `readerIndex` and increases the `readerIndex` by `8` in this buffer.

Specified by:
  `readDouble` in interface `ChannelBuffer`

#### readBytes

    public ChannelBuffer readBytes(int length)

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `readBytes` in interface `ChannelBuffer`
Parameters:
  `length` - the number of bytes to transfer
Returns:
  the newly created buffer which contains the transferred bytes

#### readBytes

    @Deprecated
    public ChannelBuffer readBytes(ChannelBufferIndexFinder endIndexFinder)

Deprecated.

Specified by:
  `readBytes` in interface `ChannelBuffer`

#### readSlice

    public ChannelBuffer readSlice(int length)

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `readSlice` in interface `ChannelBuffer`
Parameters:
  `length` - the size of the new slice
Returns:
  the newly created slice

#### readSlice

    @Deprecated
    public ChannelBuffer readSlice(ChannelBufferIndexFinder endIndexFinder)

Deprecated.

Specified by:
  `readSlice` in interface `ChannelBuffer`

#### readBytes

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

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `readBytes` in interface `ChannelBuffer`
  `dstIndex` - the first index of the destination
  `length` - the number of bytes to transfer

#### readBytes

    public void readBytes(byte[] dst)

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `readBytes` in interface `ChannelBuffer`

#### readBytes

    public void readBytes(ChannelBuffer dst)

Description copied from interface: `ChannelBuffer`
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 `ChannelBuffer.readBytes(ChannelBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes while `ChannelBuffer.readBytes(ChannelBuffer, int, int)` does not.

Specified by:
  `readBytes` in interface `ChannelBuffer`

#### readBytes

    public void readBytes(ChannelBuffer dst,
                 int length)

Description copied from interface: `ChannelBuffer`
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 `ChannelBuffer.readBytes(ChannelBuffer, int, int)`, except that this method increases the `writerIndex` of the destination by the number of the transferred bytes (= `length`) while `ChannelBuffer.readBytes(ChannelBuffer, int, int)` does not.

Specified by:
  `readBytes` in interface `ChannelBuffer`

#### readBytes

    public void readBytes(ChannelBuffer dst,
                 int dstIndex,
                 int length)

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `readBytes` in interface `ChannelBuffer`
  `dstIndex` - the first index of the destination
  `length` - the number of bytes to transfer

#### readBytes

    public void readBytes(ByteBuffer dst)

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `readBytes` in interface `ChannelBuffer`

#### readBytes

    public int readBytes(GatheringByteChannel out,
                int length)
                  throws IOException

Description copied from interface: `ChannelBuffer`
Transfers this buffer's data to the specified stream starting at the current `readerIndex`.

Specified by:
  `readBytes` in interface `ChannelBuffer`
  `length` - the maximum number of bytes to transfer
Returns:
  the actual number of bytes written out to the specified channel
Throws:
  `IOException` - if the specified channel threw an exception during I/O

#### readBytes

    public void readBytes(OutputStream out,
                 int length)
                   throws IOException

Description copied from interface: `ChannelBuffer`
Transfers this buffer's data to the specified stream starting at the current `readerIndex`.

Specified by:
  `readBytes` in interface `ChannelBuffer`
  `length` - the number of bytes to transfer
Throws:
  `IOException` - if the specified stream threw an exception during I/O

#### skipBytes

    public void skipBytes(int length)

Description copied from interface: `ChannelBuffer`
Increases the current `readerIndex` by the specified `length` in this buffer.

Specified by:
  `skipBytes` in interface `ChannelBuffer`

#### skipBytes

    @Deprecated
    public int skipBytes(ChannelBufferIndexFinder firstIndexFinder)

Deprecated.

Specified by:
  `skipBytes` in interface `ChannelBuffer`

#### writeByte

    public void writeByte(int value)

Description copied from interface: `ChannelBuffer`
Sets the specified byte at the current `writerIndex` and increases the `writerIndex` by `1` in this buffer. The 24 high-order bits of the specified value are ignored.

Specified by:
  `writeByte` in interface `ChannelBuffer`

#### writeShort

    public void writeShort(int value)

Description copied from interface: `ChannelBuffer`
Sets the specified 16-bit short integer at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer. The 16 high-order bits of the specified value are ignored.

Specified by:
  `writeShort` in interface `ChannelBuffer`

#### writeMedium

    public void writeMedium(int value)

Description copied from interface: `ChannelBuffer`
Sets the specified 24-bit medium integer at the current `writerIndex` and increases the `writerIndex` by `3` in this buffer.

Specified by:
  `writeMedium` in interface `ChannelBuffer`

#### writeInt

    public void writeInt(int value)

Description copied from interface: `ChannelBuffer`
Sets the specified 32-bit integer at the current `writerIndex` and increases the `writerIndex` by `4` in this buffer.

Specified by:
  `writeInt` in interface `ChannelBuffer`

#### writeLong

    public void writeLong(long value)

Description copied from interface: `ChannelBuffer`
Sets the specified 64-bit long integer at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.

Specified by:
  `writeLong` in interface `ChannelBuffer`

#### writeChar

    public void writeChar(int value)

Description copied from interface: `ChannelBuffer`
Sets the specified 2-byte UTF-16 character at the current `writerIndex` and increases the `writerIndex` by `2` in this buffer. The 16 high-order bits of the specified value are ignored.

Specified by:
  `writeChar` in interface `ChannelBuffer`

#### writeFloat

    public void writeFloat(float value)

Description copied from interface: `ChannelBuffer`
Sets the specified 32-bit floating point number at the current `writerIndex` and increases the `writerIndex` by `4` in this buffer.

Specified by:
  `writeFloat` in interface `ChannelBuffer`

#### writeDouble

    public void writeDouble(double value)

Description copied from interface: `ChannelBuffer`
Sets the specified 64-bit floating point number at the current `writerIndex` and increases the `writerIndex` by `8` in this buffer.

Specified by:
  `writeDouble` in interface `ChannelBuffer`

#### writeBytes

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

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `writeBytes` in interface `ChannelBuffer`
  `srcIndex` - the first index of the source
  `length` - the number of bytes to transfer

#### writeBytes

    public void writeBytes(byte[] src)

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `writeBytes` in interface `ChannelBuffer`

#### writeBytes

    public void writeBytes(ChannelBuffer src)

Description copied from interface: `ChannelBuffer`
Transfers the specified source buffer's data to this buffer starting at the current `writerIndex` until the source buffer becomes unreadable, and increases the `writerIndex` by the number of the transferred bytes. This method is basically same with `ChannelBuffer.writeBytes(ChannelBuffer, int, int)`, except that this method increases the `readerIndex` of the source buffer by the number of the transferred bytes while `ChannelBuffer.writeBytes(ChannelBuffer, int, int)` does not.

Specified by:
  `writeBytes` in interface `ChannelBuffer`

#### writeBytes

    public void writeBytes(ChannelBuffer src,
                  int length)

Description copied from interface: `ChannelBuffer`
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 `ChannelBuffer.writeBytes(ChannelBuffer, int, int)`, except that this method increases the `readerIndex` of the source buffer by the number of the transferred bytes (= `length`) while `ChannelBuffer.writeBytes(ChannelBuffer, int, int)` does not.

Specified by:
  `writeBytes` in interface `ChannelBuffer`
  `length` - the number of bytes to transfer

#### writeBytes

    public void writeBytes(ChannelBuffer src,
                  int srcIndex,
                  int length)

Description copied from interface: `ChannelBuffer`
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`).

Specified by:
  `writeBytes` in interface `ChannelBuffer`
  `srcIndex` - the first index of the source
  `length` - the number of bytes to transfer

#### writeBytes

    public void writeBytes(ByteBuffer src)

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `writeBytes` in interface `ChannelBuffer`

#### writeBytes

    public int writeBytes(InputStream in,
                 int length)
                   throws IOException

Description copied from interface: `ChannelBuffer`
Transfers the content of the specified stream to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes.

Specified by:
  `writeBytes` in interface `ChannelBuffer`
  `length` - the number of bytes to transfer
Returns:
  the actual number of bytes read in from the specified stream
Throws:
  `IOException` - if the specified stream threw an exception during I/O

#### writeBytes

    public int writeBytes(ScatteringByteChannel in,
                 int length)
                   throws IOException

Description copied from interface: `ChannelBuffer`
Transfers the content of the specified channel to this buffer starting at the current `writerIndex` and increases the `writerIndex` by the number of the transferred bytes.

Specified by:
  `writeBytes` in interface `ChannelBuffer`
  `length` - the maximum number of bytes to transfer
Returns:
  the actual number of bytes read in from the specified channel
Throws:
  `IOException` - if the specified channel threw an exception during I/O

#### writeZero

    public void writeZero(int length)

Description copied from interface: `ChannelBuffer`
Fills this buffer with `NUL (0x00)` starting at the current `writerIndex` and increases the `writerIndex` by the specified `length`.

Specified by:
  `writeZero` in interface `ChannelBuffer`
Parameters:
  `length` - the number of `NUL`s to write to the buffer

#### copy

    public ChannelBuffer copy()

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `copy` in interface `ChannelBuffer`

#### slice

    public ChannelBuffer slice()

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `slice` in interface `ChannelBuffer`

#### toByteBuffer

    public ByteBuffer toByteBuffer()

Description copied from interface: `ChannelBuffer`
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.

Specified by:
  `toByteBuffer` in interface `ChannelBuffer`

#### toByteBuffers

    public ByteBuffer[] toByteBuffers()

Description copied from interface: `ChannelBuffer`
Converts this buffer's readable bytes into an array of NIO buffers. The returned buffers might or might not share the content with this buffer, while they have separate indexes and marks. This method is identical to `buf.toByteBuffers(buf.readerIndex(), buf.readableBytes())`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `toByteBuffers` in interface `ChannelBuffer`

#### toByteBuffers

    public ByteBuffer[] toByteBuffers(int index,
                             int length)

Description copied from interface: `ChannelBuffer`
Converts this buffer's sub-region into an array of NIO buffers. The returned buffers 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.

Specified by:
  `toByteBuffers` in interface `ChannelBuffer`

#### toString

    public String toString(Charset charset)

Description copied from interface: `ChannelBuffer`
Decodes this buffer's readable bytes into a string with the specified character set name. This method is identical to `buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName)`. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `toString` in interface `ChannelBuffer`

#### toString

    public String toString(int index,
                  int length,
                  Charset charset)

Description copied from interface: `ChannelBuffer`
Decodes this buffer's sub-region into a string with the specified character set. This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `toString` in interface `ChannelBuffer`

#### toString

    @Deprecated
    public String toString(int index,
                             int length,
                             String charsetName,
                             ChannelBufferIndexFinder terminatorFinder)

Deprecated.

Specified by:
  `toString` in interface `ChannelBuffer`

#### toString

    @Deprecated
    public String toString(int index,
                             int length,
                             String charsetName)

Deprecated.

Specified by:
  `toString` in interface `ChannelBuffer`

#### toString

    @Deprecated
    public String toString(String charsetName,
                             ChannelBufferIndexFinder terminatorFinder)

Deprecated.

Specified by:
  `toString` in interface `ChannelBuffer`

#### toString

    @Deprecated
    public String toString(String charsetName)

Deprecated.

Specified by:
  `toString` in interface `ChannelBuffer`

#### indexOf

    public int indexOf(int fromIndex,
              int toIndex,
              byte value)

Description copied from interface: `ChannelBuffer`
Locates the first occurrence of the specified `value` in this buffer. The search takes place from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive).

If `fromIndex` is greater than `toIndex`, the search is performed in a reversed order.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `indexOf` in interface `ChannelBuffer`
Returns:
  the absolute index of the first occurrence if found. `-1` otherwise.

#### indexOf

    public int indexOf(int fromIndex,
              int toIndex,
              ChannelBufferIndexFinder indexFinder)

Description copied from interface: `ChannelBuffer`
Locates the first place where the specified `indexFinder` returns `true`. The search takes place from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive).

If `fromIndex` is greater than `toIndex`, the search is performed in a reversed order.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `indexOf` in interface `ChannelBuffer`
Returns:
  the absolute index where the specified `indexFinder` returned `true`. `-1` if the `indexFinder` did not return `true` at all.

#### bytesBefore

    public int bytesBefore(byte value)

Description copied from interface: `ChannelBuffer`
Locates the first occurrence of the specified `value` in this buffer. The search takes place from the current `readerIndex` (inclusive) to the current `writerIndex` (exclusive).

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `bytesBefore` in interface `ChannelBuffer`
Returns:
  the number of bytes between the current `readerIndex` and the first occurrence if found. `-1` otherwise.

#### bytesBefore

    public int bytesBefore(ChannelBufferIndexFinder indexFinder)

Description copied from interface: `ChannelBuffer`
Locates the first place where the specified `indexFinder` returns `true`. The search takes place from the current `readerIndex` (inclusive) to the current `writerIndex`.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `bytesBefore` in interface `ChannelBuffer`
Returns:
  the number of bytes between the current `readerIndex` and the first place where the `indexFinder` returned `true`. `-1` if the `indexFinder` did not return `true` at all.

#### bytesBefore

    public int bytesBefore(int length,
                  byte value)

Description copied from interface: `ChannelBuffer`
Locates the first occurrence of the specified `value` in this buffer. The search starts from the current `readerIndex` (inclusive) and lasts for the specified `length`.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `bytesBefore` in interface `ChannelBuffer`
Returns:
  the number of bytes between the current `readerIndex` and the first occurrence if found. `-1` otherwise.

#### bytesBefore

    public int bytesBefore(int length,
                  ChannelBufferIndexFinder indexFinder)

Description copied from interface: `ChannelBuffer`
Locates the first place where the specified `indexFinder` returns `true`. The search starts the current `readerIndex` (inclusive) and lasts for the specified `length`.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `bytesBefore` in interface `ChannelBuffer`
Returns:
  the number of bytes between the current `readerIndex` and the first place where the `indexFinder` returned `true`. `-1` if the `indexFinder` did not return `true` at all.

#### bytesBefore

    public int bytesBefore(int index,
                  int length,
                  byte value)

Description copied from interface: `ChannelBuffer`
Locates the first occurrence of the specified `value` in this buffer. The search starts from the specified `index` (inclusive) and lasts for the specified `length`.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `bytesBefore` in interface `ChannelBuffer`
Returns:
  the number of bytes between the specified `index` and the first occurrence if found. `-1` otherwise.

#### bytesBefore

    public int bytesBefore(int index,
                  int length,
                  ChannelBufferIndexFinder indexFinder)

Description copied from interface: `ChannelBuffer`
Locates the first place where the specified `indexFinder` returns `true`. The search starts the specified `index` (inclusive) and lasts for the specified `length`.

This method does not modify `readerIndex` or `writerIndex` of this buffer.

Specified by:
  `bytesBefore` in interface `ChannelBuffer`
Returns:
  the number of bytes between the specified `index` and the first place where the `indexFinder` returned `true`. `-1` if the `indexFinder` did not return `true` at all.

#### hashCode

    public int hashCode()

Description copied from interface: `ChannelBuffer`
Returns a hash code which was calculated from the content of this buffer. If there's a byte array which is equal to this array, both arrays should return the same value.

Specified by:
  `hashCode` in interface `ChannelBuffer`
Overrides:
  `hashCode` in class `Object`

#### equals

    public boolean equals(Object o)

Description copied from interface: `ChannelBuffer`
Determines if the content of the specified buffer is identical to the content of this array. 'Identical' here means:

- the size of the contents of the two buffers are same and
- every single byte of the content of the two buffers are same.

Please note that it does not compare `ChannelBuffer.readerIndex()` nor `ChannelBuffer.writerIndex()`. This method also returns `false` for `null` and an object which is not an instance of `ChannelBuffer` type.

Specified by:
  `equals` in interface `ChannelBuffer`
Overrides:
  `equals` in class `Object`

#### compareTo

    public int compareTo(ChannelBuffer that)

Description copied from interface: `ChannelBuffer`
Compares the content of the specified buffer to the content of this buffer. Comparison is performed in the same manner with the string comparison functions of various languages such as `strcmp`, `memcmp` and `String.compareTo(String)`.

Specified by:
  `compareTo` in interface `Comparable<ChannelBuffer>`
Specified by:
  `compareTo` in interface `ChannelBuffer`

#### toString

    public String toString()

Description copied from interface: `ChannelBuffer`
Returns the string representation of this buffer. This method does not necessarily return the whole content of the buffer but returns the values of the key properties such as `ChannelBuffer.readerIndex()`, `ChannelBuffer.writerIndex()` and `ChannelBuffer.capacity()`.

Specified by:
  `toString` in interface `ChannelBuffer`
Overrides:
  `toString` in class `Object`

#### checkReadableBytes

    protected void checkReadableBytes(int minimumReadableBytes)

Throws an `IndexOutOfBoundsException` if the current readable bytes of this buffer is less than the specified value.