org.jboss.netty.buffer

## Class DynamicChannelBuffer

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

- All Implemented Interfaces:
    Comparable<ChannelBuffer>, ChannelBuffer

      public class DynamicChannelBuffer
      extends AbstractChannelBuffer

  A dynamic capacity buffer which increases its capacity as needed. It is recommended to use `ChannelBuffers.dynamicBuffer(int)` instead of calling the constructor explicitly.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DynamicChannelBuffer(ByteOrder endianness, int estimatedLength)`
    `DynamicChannelBuffer(ByteOrder endianness, int estimatedLength, ChannelBufferFactory factory)`
    `DynamicChannelBuffer(int estimatedLength)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `array()` Returns the backing byte array of this buffer.
    `int` | `arrayOffset()` Returns the offset of the first byte within the backing byte array of this buffer.
    `int` | `capacity()` Returns the number of bytes (octets) this buffer can contain.
    `ChannelBuffer` | `copy(int index, int length)` Returns a copy of this buffer's sub-region.
    `ChannelBuffer` | `duplicate()` Returns a buffer which shares the whole region of this buffer.
    `void` | `ensureWritableBytes(int minWritableBytes)` Makes sure the number of the writable bytes is equal to or greater than the specified value.
    `ChannelBufferFactory` | `factory()` Returns the factory which creates a `ChannelBuffer` whose type and default `ByteOrder` are same with this buffer.
    `byte` | `getByte(int index)` Gets a byte at the specified absolute `index` in this buffer.
    `void` | `getBytes(int index, byte[] dst, int dstIndex, int length)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
    `void` | `getBytes(int index, ByteBuffer dst)` Transfers this buffer's data to the specified destination starting at the specified absolute `index` until the destination's position reaches its limit.
    `void` | `getBytes(int index, ChannelBuffer dst, int dstIndex, int length)` Transfers this buffer's data to the specified destination starting at the specified absolute `index`.
    `int` | `getBytes(int index, GatheringByteChannel out, int length)` Transfers this buffer's data to the specified channel starting at the specified absolute `index`.
    `void` | `getBytes(int index, OutputStream out, int length)` Transfers this buffer's data to the specified stream starting at the specified absolute `index`.
    `int` | `getInt(int index)` Gets a 32-bit integer at the specified absolute `index` in this buffer.
    `long` | `getLong(int index)` Gets a 64-bit long integer at the specified absolute `index` in this buffer.
    `short` | `getShort(int index)` Gets a 16-bit short integer at the specified absolute `index` in this buffer.
    `int` | `getUnsignedMedium(int index)` Gets an unsigned 24-bit medium integer at the specified absolute `index` in this buffer.
    `boolean` | `hasArray()` Returns `true` if and only if this buffer has a backing byte array.
    `boolean` | `isDirect()` Returns `true` if and only if this buffer is backed by an NIO direct buffer.
    `ByteOrder` | `order()` Returns the endianness of this buffer.
    `void` | `setByte(int index, int value)` Sets the specified byte at the specified absolute `index` in this buffer.
    `void` | `setBytes(int index, byte[] src, int srcIndex, int length)` Transfers the specified source array's data to this buffer starting at the specified absolute `index`.
    `void` | `setBytes(int index, ByteBuffer src)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index` until the source buffer's position reaches its limit.
    `void` | `setBytes(int index, ChannelBuffer src, int srcIndex, int length)` Transfers the specified source buffer's data to this buffer starting at the specified absolute `index`.
    `int` | `setBytes(int index, InputStream in, int length)` Transfers the content of the specified source stream to this buffer starting at the specified absolute `index`.
    `int` | `setBytes(int index, ScatteringByteChannel in, int length)` Transfers the content of the specified source channel to this buffer starting at the specified absolute `index`.
    `void` | `setInt(int index, int value)` Sets the specified 32-bit integer at the specified absolute `index` in this buffer.
    `void` | `setLong(int index, long value)` Sets the specified 64-bit long integer at the specified absolute `index` in this buffer.
    `void` | `setMedium(int index, int value)` Sets the specified 24-bit medium integer at the specified absolute `index` in this buffer.
    `void` | `setShort(int index, int value)` Sets the specified 16-bit short integer at the specified absolute `index` in this buffer.
    `ChannelBuffer` | `slice(int index, int length)` Returns a slice of this buffer's sub-region.
    `ByteBuffer` | `toByteBuffer(int index, int length)` Converts this buffer's sub-region into a NIO buffer.
    `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, 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, 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` | `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.
    `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 org.jboss.netty.buffer.AbstractChannelBuffer

      `bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, checkReadableBytes, clear, compareTo, copy, discardReadBytes, equals, getBytes, getBytes, getBytes, getChar, getDouble, getFloat, getMedium, getUnsignedByte, getUnsignedInt, getUnsignedShort, hashCode, indexOf, indexOf, markReaderIndex, markWriterIndex, readable, readableBytes, readByte, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readChar, readDouble, readerIndex, readerIndex, readFloat, readInt, readLong, readMedium, readShort, readSlice, readSlice, readUnsignedByte, readUnsignedInt, readUnsignedMedium, readUnsignedShort, resetReaderIndex, resetWriterIndex, setBytes, setBytes, setBytes, setChar, setDouble, setFloat, setIndex, setZero, skipBytes, skipBytes, slice, toByteBuffer, toByteBuffers, toByteBuffers, toString, toString, toString, toString, toString, toString, toString, writable, writableBytes, writeBytes, writeBytes, writeBytes, writeChar, writeDouble, writeFloat, writerIndex, writerIndex`

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

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

- - ### Constructor Detail

    - #### DynamicChannelBuffer

          public DynamicChannelBuffer(int estimatedLength)

    - #### DynamicChannelBuffer

          public DynamicChannelBuffer(ByteOrder endianness,
                              int estimatedLength)

    - #### DynamicChannelBuffer

          public DynamicChannelBuffer(ByteOrder endianness,
                              int estimatedLength,
                              ChannelBufferFactory factory)

  - ### Method Detail

    - #### ensureWritableBytes

          public void ensureWritableBytes(int minWritableBytes)

      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`
      Overrides:
        `ensureWritableBytes` in class `AbstractChannelBuffer`
      Parameters:
        `minWritableBytes` - the expected minimum number of writable bytes

    - #### factory

          public ChannelBufferFactory factory()

      Description copied from interface: `ChannelBuffer`
      Returns the factory which creates a `ChannelBuffer` whose type and default `ByteOrder` are same with this buffer.

    - #### order

          public ByteOrder order()

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

    - #### isDirect

          public boolean isDirect()

      Description copied from interface: `ChannelBuffer`
      Returns `true` if and only if this buffer is backed by an NIO direct buffer.

    - #### capacity

          public int capacity()

      Description copied from interface: `ChannelBuffer`
      Returns the number of bytes (octets) this buffer can contain.

    - #### hasArray

          public boolean hasArray()

      Description copied from interface: `ChannelBuffer`
      Returns `true` if and only if this buffer has a backing byte array. If this method returns true, you can safely call `ChannelBuffer.array()` and `ChannelBuffer.arrayOffset()`.

    - #### array

          public byte[] array()

      Description copied from interface: `ChannelBuffer`
      Returns the backing byte array of this buffer.

    - #### arrayOffset

          public int arrayOffset()

      Description copied from interface: `ChannelBuffer`
      Returns the offset of the first byte within the backing byte array of this buffer.

    - #### getByte

          public byte getByte(int index)

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

    - #### getShort

          public short getShort(int index)

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

    - #### getUnsignedMedium

          public int getUnsignedMedium(int index)

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

    - #### getInt

          public int getInt(int index)

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

    - #### getLong

          public long getLong(int index)

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

    - #### getBytes

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

      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.
        `dstIndex` - the first index of the destination
        `length` - the number of bytes to transfer

    - #### getBytes

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

      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 both the source (i.e. `this`) and the destination.
        `dstIndex` - the first index of the destination
        `length` - the number of bytes to transfer

    - #### getBytes

          public void getBytes(int index,
                      ByteBuffer dst)

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

    - #### getBytes

          public int getBytes(int index,
                     GatheringByteChannel out,
                     int length)
                       throws IOException

      Description copied from interface: `ChannelBuffer`
      Transfers this buffer's data to the specified channel starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.
        `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

    - #### getBytes

          public void getBytes(int index,
                      OutputStream out,
                      int length)
                        throws IOException

      Description copied from interface: `ChannelBuffer`
      Transfers this buffer's data to the specified stream starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.
        `length` - the number of bytes to transfer
      Throws:
        `IOException` - if the specified stream threw an exception during I/O

    - #### setByte

          public void setByte(int index,
                     int value)

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

    - #### setShort

          public void setShort(int index,
                      int value)

      Description copied from interface: `ChannelBuffer`
      Sets the specified 16-bit short integer 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.

    - #### setMedium

          public void setMedium(int index,
                       int value)

      Description copied from interface: `ChannelBuffer`
      Sets the specified 24-bit medium integer at the specified absolute `index` in this buffer. Please note that the most significant byte is ignored in the specified value. This method does not modify `readerIndex` or `writerIndex` of this buffer.

    - #### setInt

          public void setInt(int index,
                    int value)

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

    - #### setLong

          public void setLong(int index,
                     long value)

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

    - #### setBytes

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

      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.

    - #### setBytes

          public void setBytes(int index,
                      ChannelBuffer src,
                      int srcIndex,
                      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 does not modify `readerIndex` or `writerIndex` of both the source (i.e. `this`) and the destination.
        `srcIndex` - the first index of the source
        `length` - the number of bytes to transfer

    - #### setBytes

          public void setBytes(int index,
                      ByteBuffer 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's position reaches its limit. This method does not modify `readerIndex` or `writerIndex` of this buffer.

    - #### setBytes

          public int setBytes(int index,
                     InputStream in,
                     int length)
                       throws IOException

      Description copied from interface: `ChannelBuffer`
      Transfers the content of the specified source stream to this buffer starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.
        `length` - the number of bytes to transfer
      Returns:
        the actual number of bytes read in from the specified channel. `-1` if the specified channel is closed.
      Throws:
        `IOException` - if the specified stream threw an exception during I/O

    - #### setBytes

          public int setBytes(int index,
                     ScatteringByteChannel in,
                     int length)
                       throws IOException

      Description copied from interface: `ChannelBuffer`
      Transfers the content of the specified source channel to this buffer starting at the specified absolute `index`. This method does not modify `readerIndex` or `writerIndex` of this buffer.
        `length` - the maximum number of bytes to transfer
      Returns:
        the actual number of bytes read in from the specified channel. `-1` if the specified channel is closed.
      Throws:
        `IOException` - if the specified channel threw an exception during I/O

    - #### 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`
      Overrides:
        `writeByte` in class `AbstractChannelBuffer`

    - #### 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`
      Overrides:
        `writeShort` in class `AbstractChannelBuffer`

    - #### 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`
      Overrides:
        `writeMedium` in class `AbstractChannelBuffer`

    - #### 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`
      Overrides:
        `writeInt` in class `AbstractChannelBuffer`

    - #### 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`
      Overrides:
        `writeLong` in class `AbstractChannelBuffer`

    - #### 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`
      Overrides:
        `writeBytes` in class `AbstractChannelBuffer`
        `srcIndex` - the first index of the source
        `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`
      Overrides:
        `writeBytes` in class `AbstractChannelBuffer`
        `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`
      Overrides:
        `writeBytes` in class `AbstractChannelBuffer`

    - #### 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`
      Overrides:
        `writeBytes` in class `AbstractChannelBuffer`
        `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`
      Overrides:
        `writeBytes` in class `AbstractChannelBuffer`
        `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`
      Overrides:
        `writeZero` in class `AbstractChannelBuffer`
      Parameters:
        `length` - the number of `NUL`s to write to the buffer

    - #### duplicate

          public ChannelBuffer duplicate()

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

    - #### copy

          public ChannelBuffer copy(int index,
                           int length)

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

    - #### slice

          public ChannelBuffer slice(int index,
                            int length)

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

    - #### toByteBuffer

          public ByteBuffer toByteBuffer(int index,
                                int length)

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

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