|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ChannelBuffer
A random and sequential accessible sequence of zero or more bytes (octets).
This interface provides an abstract view for one or more primitive byte
arrays (byte[]
) and NIO buffers.
ChannelBuffers
rather than calling an individual implementation's
constructor.
ChannelBuffer
uses
zero-based indexing.
It means the index of the first byte is always 0
and the index of
the last byte is always capacity - 1
. For example, to
iterate all bytes of a buffer, you can do the following, regardless of
its internal implementation:
ChannelBuffer buffer = ...; for (int i = 0; i < buffer.capacity(); i ++) { byte b = array.getByte(i); System.out.println((char) b); }
ChannelBuffer
provides two pointer variables to support sequential
read and write operations - readerIndex
for a read
operation and writerIndex
for a write operation
respectively. The following diagram shows how a buffer is segmented into
three areas by the two pointers:
+-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | | | (CONTENT) | | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacity
read
or skip
will get or skip the data at the
current readerIndex
and increase it by the number of
read bytes. If the argument of the read operation is also a
ChannelBuffer
and no start index is specified, the specified
buffer's readerIndex
is increased together.
If there's not enough content left, IndexOutOfBoundsException
is
raised. The default value of newly allocated, wrapped or copied buffer's
readerIndex
is 0
.
// Iterates the readable bytes of a buffer. ChannelBuffer buffer = ...; while (buffer.readable()) { System.out.println(buffer.readByte()); }
write
will write the data at the current
writerIndex
and increase it by the number of written
bytes. If the argument of the write operation is also a ChannelBuffer
,
and no start index is specified, the specified buffer's
readerIndex
is increased together.
If there's not enough writable bytes left, IndexOutOfBoundsException
is raised. The default value of newly allocated buffer's
writerIndex
is 0
. The default value of
wrapped or copied buffer's writerIndex
is the
capacity
of the buffer.
// Fills the writable bytes of a buffer with random integers. ChannelBuffer buffer = ...; while (buffer.writableBytes() >= 4) { buffer.writeInt(random.nextInt()); }
0
, but its size increases up
to the writerIndex
as read operations are executed.
The read bytes can be discarded by calling discardReadBytes()
to
reclaim unused area as depicted by the following diagram:
BEFORE discardReadBytes() +-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacity AFTER discardReadBytes() +------------------+--------------------------------------+ | readable bytes | writable bytes (got more space) | +------------------+--------------------------------------+ | | | readerIndex (0) <= writerIndex (decreased) <= capacity
readerIndex
and
writerIndex
to 0
by calling clear()
.
It does not clear the buffer content (e.g. filling with 0
) but just
clears the two pointers. Please also note that the semantic of this
operation is different from Buffer.clear()
.
BEFORE clear() +-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacity AFTER clear() +---------------------------------------------------------+ | writable bytes (got more space) | +---------------------------------------------------------+ | | 0 = readerIndex = writerIndex <= capacity
indexOf()
methods help you locate an index of a value which
meets a certain criteria. Complicated dynamic sequential search can be done
with ChannelBufferIndexFinder
as well as simple static single byte
search.
readerIndex
and the other is for storing
writerIndex
. You can always reposition one of the
two indexes by calling a reset method. It works in a similar fashion to
the mark and reset methods in InputStream
except that there's no
readlimit
.
#duplicate()
, #slice()
or #slice(int, int)
.
A derived buffer will have an independent readerIndex
,
writerIndex
and marker indexes, while it shares
other internal data representation, just like a NIO buffer does.
In case a completely fresh copy of an existing buffer is required, please
call #copy()
method instead.
toByteBuffer()
and #toByteBuffers()
methods convert
a ChannelBuffer
into one or more NIO buffers. These methods avoid
buffer allocation and memory copy whenever possible, but there's no
guarantee that memory copy will not be involved or that an explicit memory
copy will be involved.
toString(String)
methods convert a ChannelBuffer
into a String
. Plesae note that toString()
is not a
conversion method.
ChannelBufferInputStream
and
ChannelBufferOutputStream
.
Method Summary | |
---|---|
byte[] |
array()
|
int |
capacity()
Returns the number of bytes (octets) this buffer can contain. |
void |
clear()
Sets the readerIndex and writerIndex of this buffer to
0 . |
int |
compareTo(ChannelBuffer buffer)
Compares the content of the specified buffer to the content of this buffer. |
void |
discardReadBytes()
Discards the bytes between the 0th index and readerIndex . |
boolean |
equals(java.lang.Object obj)
Determines if the content of the specified buffer is identical to the content of this array. |
byte |
getByte(int index)
Gets a byte at the specified absolute index in this buffer. |
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,
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,
java.nio.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)
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 . |
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,
java.nio.channels.GatheringByteChannel out,
int length)
Transfers this buffer's data to the specified channel starting at the specified absolute index . |
void |
getBytes(int index,
java.io.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. |
int |
getMedium(int index)
Gets a 24-bit medium 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. |
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 |
getUnsignedMedium(int index)
Gets an unsigned 24-bit medium 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. |
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(java.nio.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. |
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(java.nio.channels.GatheringByteChannel out,
int length)
Transfers this buffer's data to the specified stream starting at the current readerIndex . |
void |
readBytes(java.io.OutputStream out,
int length)
Transfers this buffer's data to the specified stream starting at the current readerIndex . |
int |
readerIndex()
Returns the readerIndex of this buffer. |
void |
readerIndex(int readerIndex)
Sets the readerIndex of 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. |
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 |
setByte(int index,
byte value)
Sets the specified byte at the specified absolute index 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,
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,
java.nio.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)
Transfers the specified source buffer's data to this buffer starting at the specified absolute index until the destination 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 |
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,
java.io.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,
java.nio.channels.ScatteringByteChannel in,
int length)
Transfers the content of the specified source channel to this buffer starting at the specified absolute index . |
void |
setIndex(int readerIndex,
int writerIndex)
Sets the readerIndex and writerIndex of this buffer
in one shot. |
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,
short value)
Sets the specified 16-bit short integer at the specified absolute index in this buffer. |
void |
setZero(int index,
int length)
Fills this buffer with NUL (0x00) starting at the specified absolute index . |
void |
skipBytes(int length)
Increases the current readerIndex by the specified
length in this buffer. |
java.nio.ByteBuffer |
toByteBuffer()
Converts this buffer's readable bytes into a NIO buffer. |
java.nio.ByteBuffer |
toByteBuffer(int index,
int length)
Converts this buffer's sub-region into a NIO buffer. |
java.nio.ByteBuffer[] |
toByteBuffers(int index,
int length)
Converts this buffer's sub-region into an array of NIO buffers. |
java.lang.String |
toString()
Returns the string representation of this buffer. |
java.lang.String |
toString(int index,
int length,
java.lang.String charsetName)
Decodes this buffer's sub-region into a string with the specified character set name. |
java.lang.String |
toString(java.lang.String charsetName)
Decodes this buffer's readable bytes into a string with the specified character set name. |
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(byte 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(java.nio.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 ). |
void |
writeBytes(java.io.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(java.nio.channels.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. |
int |
writerIndex()
Returns the writerIndex of this buffer. |
void |
writerIndex(int writerIndex)
Sets the writerIndex of this buffer. |
void |
writeShort(short 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 interface org.jboss.messaging.core.remoting.spi.MessagingBuffer |
---|
getUnderlyingBuffer, readBoolean, readChar, readDouble, readFloat, readNullableSimpleString, readNullableString, readSimpleString, readString, readUTF, writeBoolean, writeBytes, writeChar, writeDouble, writeFloat, writeNullableSimpleString, writeNullableString, writeSimpleString, writeString, writeUTF |
Method Detail |
---|
int capacity()
capacity
in interface MessagingBuffer
byte[] array()
array
in interface MessagingBuffer
int readerIndex()
readerIndex
of this buffer.
readerIndex
in interface MessagingBuffer
void readerIndex(int readerIndex)
readerIndex
of this buffer.
readerIndex
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if the specified readerIndex
is
less than 0
or
greater than this.writerIndex
int writerIndex()
writerIndex
of this buffer.
writerIndex
in interface MessagingBuffer
void writerIndex(int writerIndex)
writerIndex
of this buffer.
writerIndex
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if the specified writerIndex
is
less than this.readerIndex
or
greater than this.capacity
void setIndex(int readerIndex, int writerIndex)
readerIndex
and writerIndex
of this buffer
in one shot. This method is useful when you have to worry about the
invocation order of readerIndex(int)
and 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,
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);
setIndex
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if the specified readerIndex
is less than 0,
if the specified writerIndex
is less than the specified
readerIndex
or if the specified writerIndex
is
greater than this.capacity
int readableBytes()
(this.writerIndex - this.readerIndex)
.
readableBytes
in interface MessagingBuffer
int writableBytes()
(this.capacity - this.writerIndex)
.
writableBytes
in interface MessagingBuffer
boolean readable()
true
if and only if (this.writerIndex - this.readerIndex)
is greater
than 0
.
readable
in interface MessagingBuffer
boolean writable()
true
if and only if (this.capacity - this.writerIndex)
is greater
than 0
.
writable
in interface MessagingBuffer
void clear()
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.
clear
in interface MessagingBuffer
void markReaderIndex()
readerIndex
in this buffer. You can
reposition the current readerIndex
to the marked
readerIndex
by calling resetReaderIndex()
.
The initial value of the marked readerIndex
is 0
.
void resetReaderIndex()
readerIndex
to the marked
readerIndex
in this buffer.
resetReaderIndex
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if the current writerIndex
is less than the marked
readerIndex
void markWriterIndex()
writerIndex
in this buffer. You can
reposition the current writerIndex
to the marked
writerIndex
by calling resetWriterIndex()
.
The initial value of the marked writerIndex
is 0
.
void resetWriterIndex()
writerIndex
to the marked
writerIndex
in this buffer.
resetWriterIndex
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if the current readerIndex
is greater than the marked
writerIndex
void discardReadBytes()
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.
byte getByte(int index)
index
in this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 1
is greater than this.capacity
short getUnsignedByte(int index)
index
in this
buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 1
is greater than this.capacity
short getShort(int index)
index
in
this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 2
is greater than this.capacity
int getUnsignedShort(int index)
index
in this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 2
is greater than this.capacity
int getMedium(int index)
index
in
this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 3
is greater than this.capacity
int getUnsignedMedium(int index)
index
in this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 3
is greater than this.capacity
int getInt(int index)
index
in
this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 4
is greater than this.capacity
long getUnsignedInt(int index)
index
in this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 4
is greater than this.capacity
long getLong(int index)
index
in
this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 8
is greater than this.capacity
void getBytes(int index, ChannelBuffer dst)
index
until the destination becomes
non-writable. This method is basically same with
getBytes(int, ChannelBuffer, int, int)
, except that this
method increases the writerIndex
of the destination by the
number of the transferred bytes while
getBytes(int, ChannelBuffer, int, int)
does not.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + dst.writableBytes
is greater than
this.capacity
void getBytes(int index, ChannelBuffer dst, int length)
index
. This method is basically same
with getBytes(int, ChannelBuffer, int, int)
, except that this
method increases the writerIndex
of the destination by the
number of the transferred bytes while
getBytes(int, ChannelBuffer, int, int)
does not.
length
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
,
if index + length
is greater than
this.capacity
, or
if length
is greater than dst.writableBytes
void getBytes(int index, ChannelBuffer dst, int dstIndex, int length)
index
.
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
,
if the specified dstIndex
is less than 0
,
if index + length
is greater than
this.capacity
, or
if dstIndex + length
is greater than
dst.capacity
void getBytes(int index, byte[] dst)
index
.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + dst.length
is greater than
this.capacity
void getBytes(int index, byte[] dst, int dstIndex, int length)
index
.
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
,
if the specified dstIndex
is less than 0
,
if index + length
is greater than
this.capacity
, or
if dstIndex + length
is greater than
dst.length
void getBytes(int index, java.nio.ByteBuffer dst)
index
until the destination's position
reaches its limit.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + dst.remaining()
is greater than
this.capacity
void getBytes(int index, java.io.OutputStream out, int length) throws java.io.IOException
index
.
length
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + length
is greater than
this.capacity
java.io.IOException
- if the specified stream threw an exception during I/Oint getBytes(int index, java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
index
.
length
- the maximum number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + length
is greater than
this.capacity
java.io.IOException
- if the specified channel threw an exception during I/Ovoid setByte(int index, byte value)
index
in this
buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 1
is greater than this.capacity
void setShort(int index, short value)
index
in this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 2
is greater than this.capacity
void setMedium(int index, int value)
index
in this buffer. Please note that the most significant
byte is ignored in the specified value.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 3
is greater than this.capacity
void setInt(int index, int value)
index
in this buffer.
setInt
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 4
is greater than this.capacity
void setLong(int index, long value)
index
in this buffer.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
index + 8
is greater than this.capacity
void setBytes(int index, ChannelBuffer src)
index
until the destination becomes
unreadable. This method is basically same with
setBytes(int, ChannelBuffer, int, int)
, except that this
method increases the readerIndex
of the source buffer by
the number of the transferred bytes while
getBytes(int, ChannelBuffer, int, int)
does not.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + src.readableBytes
is greater than
this.capacity
void setBytes(int index, ChannelBuffer src, int length)
index
. This method is basically same
with setBytes(int, ChannelBuffer, int, int)
, except that this
method increases the readerIndex
of the source buffer by
the number of the transferred bytes while
getBytes(int, ChannelBuffer, int, int)
does not.
length
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
,
if index + length
is greater than
this.capacity
, or
if length
is greater than src.readableBytes
void setBytes(int index, ChannelBuffer src, int srcIndex, int length)
index
.
srcIndex
- the first index of the sourcelength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
,
if the specified srcIndex
is less than 0
,
if index + length
is greater than
this.capacity
, or
if srcIndex + length
is greater than
src.capacity
void setBytes(int index, byte[] src)
index
.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + src.length
is greater than
this.capacity
void setBytes(int index, byte[] src, int srcIndex, int length)
index
.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
,
if the specified srcIndex
is less than 0
,
if index + length
is greater than
this.capacity
, or
if srcIndex + length
is greater than src.length
void setBytes(int index, java.nio.ByteBuffer src)
index
until the source buffer's position
reaches its limit.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + src.remaining()
is greater than
this.capacity
int setBytes(int index, java.io.InputStream in, int length) throws java.io.IOException
index
.
length
- the number of bytes to transfer
-1
if the specified channel is closed.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + length
is greater than this.capacity
java.io.IOException
- if the specified stream threw an exception during I/Oint setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
index
.
length
- the maximum number of bytes to transfer
-1
if the specified channel is closed.
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + length
is greater than this.capacity
java.io.IOException
- if the specified channel threw an exception during I/Ovoid setZero(int index, int length)
index
.
length
- the number of NULs to write to the buffer
java.lang.IndexOutOfBoundsException
- if the specified index
is less than 0
or
if index + length
is greater than this.capacity
byte readByte()
readerIndex
and increases
the readerIndex
by 1
in this buffer.
readByte
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 1
short readUnsignedByte()
readerIndex
and increases
the readerIndex
by 1
in this buffer.
readUnsignedByte
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 1
short readShort()
readerIndex
and increases the readerIndex
by 2
in this buffer.
readShort
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 2
int readUnsignedShort()
readerIndex
and increases the readerIndex
by 2
in this buffer.
readUnsignedShort
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 2
int readMedium()
readerIndex
and increases the readerIndex
by 3
in this buffer.
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 3
int readUnsignedMedium()
readerIndex
and increases the readerIndex
by 3
in this buffer.
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 3
int readInt()
readerIndex
and increases the readerIndex
by 4
in this buffer.
readInt
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 4
long readUnsignedInt()
readerIndex
and increases the readerIndex
by 4
in this buffer.
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 4
long readLong()
readerIndex
and increases the readerIndex
by 8
in this buffer.
readLong
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.readableBytes
is less than 8
void readBytes(ChannelBuffer dst)
readerIndex
until the destination becomes
non-writable, and increases the readerIndex
by the number of the
transferred bytes. This method is basically same with
readBytes(ChannelBuffer, int, int)
, except that this method
increases the writerIndex
of the destination by the number of
the transferred bytes while readBytes(ChannelBuffer, int, int)
does not.
java.lang.IndexOutOfBoundsException
- if dst.writableBytes
is greater than
this.readableBytes
void readBytes(ChannelBuffer dst, int length)
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
). This method
is basically same with readBytes(ChannelBuffer, int, int)
,
except that this method increases the writerIndex
of the
destination by the number of the transferred bytes (= length
)
while readBytes(ChannelBuffer, int, int)
does not.
java.lang.IndexOutOfBoundsException
- if length
is greater than this.readableBytes
or
if length
is greater than dst.writableBytes
void readBytes(ChannelBuffer dst, int dstIndex, int length)
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
).
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified dstIndex
is less than 0
,
if length
is greater than this.readableBytes
, or
if dstIndex + length
is greater than
dst.capacity
void readBytes(byte[] dst)
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= dst.length
).
readBytes
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if dst.length
is greater than this.readableBytes
void readBytes(byte[] dst, int dstIndex, int length)
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
).
readBytes
in interface MessagingBuffer
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified dstIndex
is less than 0
,
if length
is greater than this.readableBytes
, or
if dstIndex + length
is greater than dst.length
void readBytes(java.nio.ByteBuffer dst)
readerIndex
until the destination's position
reaches its limit, and increases the readerIndex
by the
number of the transferred bytes.
java.lang.IndexOutOfBoundsException
- if dst.remaining()
is greater than
this.readableBytes
void readBytes(java.io.OutputStream out, int length) throws java.io.IOException
readerIndex
.
length
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if length
is greater than this.readableBytes
java.io.IOException
- if the specified stream threw an exception during I/Oint readBytes(java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
readerIndex
.
length
- the maximum number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if length
is greater than this.readableBytes
java.io.IOException
- if the specified channel threw an exception during I/Ovoid skipBytes(int length)
readerIndex
by the specified
length
in this buffer.
java.lang.IndexOutOfBoundsException
- if length
is greater than this.readableBytes
void writeByte(byte value)
writerIndex
and increases the writerIndex
by 1
in this buffer.
writeByte
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.writableBytes
is less than 1
void writeShort(short value)
writerIndex
and increases the writerIndex
by 2
in this buffer.
writeShort
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.writableBytes
is less than 2
void writeMedium(int value)
writerIndex
and increases the writerIndex
by 3
in this buffer.
java.lang.IndexOutOfBoundsException
- if this.writableBytes
is less than 3
void writeInt(int value)
writerIndex
and increases the writerIndex
by 4
in this buffer.
writeInt
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.writableBytes
is less than 4
void writeLong(long value)
writerIndex
and increases the writerIndex
by 8
in this buffer.
writeLong
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if this.writableBytes
is less than 8
void writeBytes(ChannelBuffer src)
writerIndex
until the source buffer becomes
unreadable, and increases the writerIndex
by the number of
the transferred bytes. This method is basically same with
writeBytes(ChannelBuffer, int, int)
, except that this method
increases the readerIndex
of the source buffer by the number of
the transferred bytes while writeBytes(ChannelBuffer, int, int)
does not.
java.lang.IndexOutOfBoundsException
- if src.readableBytes
is greater than
this.writableBytes
void writeBytes(ChannelBuffer src, int length)
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= length
). This method
is basically same with writeBytes(ChannelBuffer, int, int)
,
except that this method increases the readerIndex
of the source
buffer by the number of the transferred bytes (= length
) while
writeBytes(ChannelBuffer, int, int)
does not.
length
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if length
is greater than this.writableBytes
or
if length
is greater then src.readableBytes
void writeBytes(ChannelBuffer src, int srcIndex, int length)
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= length
).
srcIndex
- the first index of the sourcelength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified srcIndex
is less than 0
,
if srcIndex + length
is greater than
src.capacity
, or
if length
is greater than this.writableBytes
void writeBytes(byte[] src)
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= src.length
).
writeBytes
in interface MessagingBuffer
java.lang.IndexOutOfBoundsException
- if src.length
is greater than this.writableBytes
void writeBytes(byte[] src, int srcIndex, int length)
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= length
).
writeBytes
in interface MessagingBuffer
srcIndex
- the first index of the sourcelength
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if the specified srcIndex
is less than 0
,
if srcIndex + length
is greater than
src.length
, or
if length
is greater than this.writableBytes
void writeBytes(java.nio.ByteBuffer src)
writerIndex
until the source buffer's position
reaches its limit, and increases the writerIndex
by the
number of the transferred bytes.
java.lang.IndexOutOfBoundsException
- if src.remaining()
is greater than
this.writableBytes
void writeBytes(java.io.InputStream in, int length) throws java.io.IOException
writerIndex
and increases the
writerIndex
by the number of the transferred bytes.
length
- the number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if length
is greater than this.writableBytes
java.io.IOException
- if the specified stream threw an exception during I/Oint writeBytes(java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
writerIndex
and increases the
writerIndex
by the number of the transferred bytes.
length
- the maximum number of bytes to transfer
java.lang.IndexOutOfBoundsException
- if length
is greater than this.writableBytes
java.io.IOException
- if the specified channel threw an exception during I/Ovoid writeZero(int length)
writerIndex
and increases the writerIndex
by the
specified length
.
length
- the number of NULs to write to the buffer
java.lang.IndexOutOfBoundsException
- if length
is greater than this.writableBytes
java.nio.ByteBuffer toByteBuffer()
buf.toByteBuffer(buf.readerIndex(), buf.readableBytes())
.
java.nio.ByteBuffer toByteBuffer(int index, int length)
java.nio.ByteBuffer[] toByteBuffers(int index, int length)
java.lang.String toString(java.lang.String charsetName)
buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName)
.
java.nio.charset.UnsupportedCharsetException
- if the specified character set name is not supported by the
current VMjava.lang.String toString(int index, int length, java.lang.String charsetName)
java.nio.charset.UnsupportedCharsetException
- if the specified character set name is not supported by the
current VMint hashCode()
hashCode
in class java.lang.Object
boolean equals(java.lang.Object obj)
readerIndex()
nor
writerIndex()
. This method also returns false
for
null
and an object which is not an instance of
ChannelBuffer
type.
equals
in class java.lang.Object
int compareTo(ChannelBuffer buffer)
strcmp
,
memcmp
and String.compareTo(String)
.
compareTo
in interface java.lang.Comparable<ChannelBuffer>
java.lang.String toString()
readerIndex()
,
writerIndex()
and capacity()
.
toString
in class java.lang.Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |