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

Version:
  $Rev: 2309 $, $Date: 2010-06-21 16:00:03 +0900 (Mon, 21 Jun 2010) $
Author:
  The Netty Project, Trustin Lee

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

Constructor Summary
`` `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
`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.

Copyright © 2008-2010 JBoss, a division of Red Hat, Inc.. All Rights Reserved.