Package org.jboss.netty.buffer
Class HeapChannelBuffer
- java.lang.Object
-
- org.jboss.netty.buffer.AbstractChannelBuffer
-
- org.jboss.netty.buffer.HeapChannelBuffer
-
- All Implemented Interfaces:
java.lang.Comparable<ChannelBuffer>
,ChannelBuffer
- Direct Known Subclasses:
BigEndianHeapChannelBuffer
,LittleEndianHeapChannelBuffer
public abstract class HeapChannelBuffer extends AbstractChannelBuffer
A skeletal implementation for Java heap buffers.
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]
array
The underlying heap byte array that this buffer is wrapping.
-
Constructor Summary
Constructors Modifier Constructor Description protected
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.protected
HeapChannelBuffer(int length)
Creates a new heap buffer with a newly allocated byte array.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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.byte
getByte(int index)
Gets a byte at the specified absoluteindex
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 absoluteindex
.void
getBytes(int index, java.io.OutputStream out, int length)
Transfers this buffer's data to the specified stream starting at the specified absoluteindex
.void
getBytes(int index, java.nio.ByteBuffer dst)
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
until the destination's position reaches its limit.int
getBytes(int index, java.nio.channels.GatheringByteChannel out, int length)
Transfers this buffer's data to the specified channel starting at the specified absoluteindex
.void
getBytes(int index, ChannelBuffer dst, int dstIndex, int length)
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
.boolean
hasArray()
Returnstrue
if and only if this buffer has a backing byte array.boolean
isDirect()
Returnstrue
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 absoluteindex
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 absoluteindex
.int
setBytes(int index, java.io.InputStream in, int length)
Transfers the content of the specified source stream to this buffer starting at the specified absoluteindex
.void
setBytes(int index, java.nio.ByteBuffer src)
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
until the source buffer's position reaches its limit.int
setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length)
Transfers the content of the specified source channel to this buffer starting at the specified absoluteindex
.void
setBytes(int index, ChannelBuffer src, int srcIndex, int length)
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
.ChannelBuffer
slice(int index, int length)
Returns a slice of this buffer's sub-region.java.nio.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, readChar, readDouble, readerIndex, readerIndex, readFloat, readInt, readLong, readMedium, readShort, readSlice, readUnsignedByte, readUnsignedInt, readUnsignedMedium, readUnsignedShort, resetReaderIndex, resetWriterIndex, setBytes, setBytes, setBytes, setChar, setDouble, setFloat, setIndex, setZero, skipBytes, slice, toByteBuffer, toByteBuffers, toByteBuffers, toString, toString, toString, writable, writableBytes, writeByte, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeChar, writeDouble, writeFloat, writeInt, writeLong, writeMedium, writerIndex, writerIndex, writeShort, writeZero
-
-
-
-
Constructor Detail
-
HeapChannelBuffer
protected HeapChannelBuffer(int length)
Creates a new heap buffer with a newly allocated byte array.- Parameters:
length
- the length of the new byte array
-
HeapChannelBuffer
protected 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 wrapreaderIndex
- the initial reader index of this bufferwriterIndex
- the initial writer index of this buffer
-
-
Method Detail
-
isDirect
public boolean isDirect()
Description copied from interface:ChannelBuffer
Returnstrue
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
Returnstrue
if and only if this buffer has a backing byte array. If this method returns true, you can safely callChannelBuffer.array()
andChannelBuffer.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 absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
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 absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of both the source (i.e.this
) and the destination.dstIndex
- the first index of the destinationlength
- 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 absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.dstIndex
- the first index of the destinationlength
- the number of bytes to transfer
-
getBytes
public void getBytes(int index, java.nio.ByteBuffer dst)
Description copied from interface:ChannelBuffer
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
until the destination's position reaches its limit. This method does not modifyreaderIndex
orwriterIndex
of this buffer while the destination'sposition
will be increased.
-
getBytes
public void getBytes(int index, java.io.OutputStream out, int length) throws java.io.IOException
Description copied from interface:ChannelBuffer
Transfers this buffer's data to the specified stream starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.length
- the number of bytes to transfer- Throws:
java.io.IOException
- if the specified stream threw an exception during I/O
-
getBytes
public int getBytes(int index, java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
Description copied from interface:ChannelBuffer
Transfers this buffer's data to the specified channel starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.length
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
java.io.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 absoluteindex
in this buffer. The 24 high-order bits of the specified value are ignored. This method does not modifyreaderIndex
orwriterIndex
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 absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of both the source (i.e.this
) and the destination.srcIndex
- the first index of the sourcelength
- 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 absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.
-
setBytes
public void setBytes(int index, java.nio.ByteBuffer src)
Description copied from interface:ChannelBuffer
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
until the source buffer's position reaches its limit. This method does not modifyreaderIndex
orwriterIndex
of this buffer.
-
setBytes
public int setBytes(int index, java.io.InputStream in, int length) throws java.io.IOException
Description copied from interface:ChannelBuffer
Transfers the content of the specified source stream to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
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:
java.io.IOException
- if the specified stream threw an exception during I/O
-
setBytes
public int setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
Description copied from interface:ChannelBuffer
Transfers the content of the specified source channel to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
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:
java.io.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 modifyreaderIndex
orwriterIndex
of this buffer.
-
toByteBuffer
public java.nio.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 modifyreaderIndex
orwriterIndex
of this buffer.
-
-