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
    Modifier and Type | Method and Description
    --- | ---
    `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.

Copyright © 2008-2012 The Netty Project. All Rights Reserved.