org.jboss.netty.buffer

## Class HeapChannelBuffer

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

All Implemented Interfaces:
  Comparable<ChannelBuffer>, ChannelBuffer

Direct Known Subclasses:
  BigEndianHeapChannelBuffer, LittleEndianHeapChannelBuffer

    public abstract class HeapChannelBuffer
    extends AbstractChannelBuffer

A skeletal implementation for Java heap buffers.

### Field Summary

Fields
`protected byte[]` `array` The underlying heap byte array that this buffer is wrapping.

### Constructor Summary

Constructors
`` `HeapChannelBuffer(byte[] array)` Creates a new heap buffer with an existing byte array.
`protected` `HeapChannelBuffer(byte[] array, int readerIndex, int writerIndex)` Creates a new heap buffer with an existing byte array.
`` `HeapChannelBuffer(int length)` Creates a new heap buffer with a newly allocated byte array.

### Method Summary

Methods
`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.
`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`.
`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.
`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`.
`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.

### Methods inherited from class org.jboss.netty.buffer.AbstractChannelBuffer

`bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, checkReadableBytes, clear, compareTo, copy, discardReadBytes, ensureWritableBytes, 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, writeByte, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeChar, writeDouble, writeFloat, writeInt, writeLong, writeMedium, writerIndex, writerIndex, writeShort, writeZero`

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

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

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

`copy, duplicate, factory, getInt, getLong, getShort, getUnsignedMedium, order, setInt, setLong, setMedium, setShort`

### Field Detail

#### array

    protected final byte[] array

The underlying heap byte array that this buffer is wrapping.

### Constructor Detail

#### HeapChannelBuffer

    public HeapChannelBuffer(int length)

Creates a new heap buffer with a newly allocated byte array.

Parameters:
  `length` - the length of the new byte array

#### HeapChannelBuffer

    public HeapChannelBuffer(byte[] array)

Creates a new heap buffer with an existing byte array.

Parameters:
  `array` - the byte array to wrap

#### HeapChannelBuffer

    protected HeapChannelBuffer(byte[] array,
                     int readerIndex,
                     int writerIndex)

Creates a new heap buffer with an existing byte array.

Parameters:
  `array` - the byte array to wrap
  `readerIndex` - the initial reader index of this buffer
  `writerIndex` - the initial writer index of this buffer

### Method Detail

#### 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.

#### 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,
                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,
                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 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

#### 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

#### 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.

#### 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,
                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,
                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

#### 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.