public abstract class ByteBuf extends java.lang.Object implements ReferenceCounted, java.lang.Comparable<ByteBuf>, ByteBufConvertible
byte[]) and NIO buffers.
Unpooled rather than calling an individual implementation's
constructor.
ByteBuf 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:
ByteBuf buffer = ...;
for (int i = 0; i < buffer.capacity(); i ++) {
byte b = buffer.getByte(i);
System.out.println((char) b);
}
ByteBuf 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
ByteBuf and no destination index is specified, the specified
buffer's writerIndex 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.
ByteBuf buffer = ...;
while (buffer.isReadable()) {
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 ByteBuf,
and no source 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.
ByteBuf buffer = ...;
while (buffer.maxWritableBytes() >= 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
Please note that there is no guarantee about the content of writable bytes
after calling discardReadBytes(). The writable bytes will not be
moved in most cases and could even be filled with completely different data
depending on the underlying buffer implementation.
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(int, int, byte) and bytesBefore(int, int, byte).
bytesBefore(byte) is especially useful when you deal with a NUL-terminated string.
For complicated searches, use forEachByte(int, int, ByteProcessor) with a ByteProcessor
implementation.
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()slice(int, int)readSlice(int)retainedDuplicate()retainedSlice()retainedSlice(int, int)readRetainedSlice(int)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.
duplicate(), slice(), slice(int, int) and readSlice(int) does NOT
call retain() on the returned derived buffer, and thus its reference count will NOT be increased. If you
need to create a derived buffer with increased reference count, consider using retainedDuplicate(),
retainedSlice(), retainedSlice(int, int) and readRetainedSlice(int) which may return
a buffer implementation that produces less garbage.
ByteBuf is backed by a byte array (i.e. byte[]),
you can access it directly via the array() method. To determine
if a buffer is backed by a byte array, hasArray() should be used.
ByteBuf can be converted into an NIO ByteBuffer which shares its
content (i.e. view buffer), you can get it via the nioBuffer() method. To determine
if a buffer can be converted into an NIO buffer, use nioBufferCount().
toString(Charset) methods convert a ByteBuf
into a String. Please note that toString() is not a
conversion method.
ByteBufInputStream and
ByteBufOutputStream.| 构造器和说明 |
|---|
ByteBuf() |
| 限定符和类型 | 方法和说明 |
|---|---|
abstract ByteBufAllocator |
alloc()
Returns the
ByteBufAllocator which created this buffer. |
abstract byte[] |
array()
Returns the backing byte array of this buffer.
|
abstract int |
arrayOffset()
Returns the offset of the first byte within the backing byte array of
this buffer.
|
ByteBuf |
asByteBuf()
A
ByteBuf can turn into itself. |
abstract ByteBuf |
asReadOnly()
Returns a read-only version of this buffer.
|
abstract int |
bytesBefore(byte value)
Locates the first occurrence of the specified
value in this
buffer. |
abstract int |
bytesBefore(int length,
byte value)
Locates the first occurrence of the specified
value in this
buffer. |
abstract int |
bytesBefore(int index,
int length,
byte value)
Locates the first occurrence of the specified
value in this
buffer. |
abstract int |
capacity()
Returns the number of bytes (octets) this buffer can contain.
|
abstract ByteBuf |
capacity(int newCapacity)
Adjusts the capacity of this buffer.
|
abstract ByteBuf |
clear()
Sets the
readerIndex and writerIndex of this buffer to
0. |
abstract int |
compareTo(ByteBuf buffer)
Compares the content of the specified buffer to the content of this
buffer.
|
abstract ByteBuf |
copy()
Returns a copy of this buffer's readable bytes.
|
abstract ByteBuf |
copy(int index,
int length)
Returns a copy of this buffer's sub-region.
|
abstract ByteBuf |
discardReadBytes()
Discards the bytes between the 0th index and
readerIndex. |
abstract ByteBuf |
discardSomeReadBytes()
Similar to
discardReadBytes() except that this method might discard
some, all, or none of read bytes depending on its internal implementation to reduce
overall memory bandwidth consumption at the cost of potentially additional memory
consumption. |
abstract ByteBuf |
duplicate()
Returns a buffer which shares the whole region of this buffer.
|
abstract ByteBuf |
ensureWritable(int minWritableBytes)
Expands the buffer
capacity() to make sure the number of
writable bytes is equal to or greater than the
specified value. |
abstract int |
ensureWritable(int minWritableBytes,
boolean force)
Expands the buffer
capacity() to make sure the number of
writable bytes is equal to or greater than the
specified value. |
abstract boolean |
equals(java.lang.Object obj)
Determines if the content of the specified buffer is identical to the
content of this array.
|
abstract int |
forEachByte(ByteProcessor processor)
Iterates over the readable bytes of this buffer with the specified
processor in ascending order. |
abstract int |
forEachByte(int index,
int length,
ByteProcessor processor)
Iterates over the specified area of this buffer with the specified
processor in ascending order. |
abstract int |
forEachByteDesc(ByteProcessor processor)
Iterates over the readable bytes of this buffer with the specified
processor in descending order. |
abstract int |
forEachByteDesc(int index,
int length,
ByteProcessor processor)
Iterates over the specified area of this buffer with the specified
processor in descending order. |
abstract boolean |
getBoolean(int index)
Gets a boolean at the specified absolute (@code index) in this buffer.
|
abstract byte |
getByte(int index)
Gets a byte at the specified absolute
index in this buffer. |
abstract ByteBuf |
getBytes(int index,
byte[] dst)
Transfers this buffer's data to the specified destination starting at
the specified absolute
index. |
abstract ByteBuf |
getBytes(int index,
byte[] dst,
int dstIndex,
int length)
Transfers this buffer's data to the specified destination starting at
the specified absolute
index. |
abstract ByteBuf |
getBytes(int index,
ByteBuf dst)
Transfers this buffer's data to the specified destination starting at
the specified absolute
index until the destination becomes
non-writable. |
abstract ByteBuf |
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. |
abstract ByteBuf |
getBytes(int index,
ByteBuf dst,
int length)
Transfers this buffer's data to the specified destination starting at
the specified absolute
index. |
abstract ByteBuf |
getBytes(int index,
ByteBuf dst,
int dstIndex,
int length)
Transfers this buffer's data to the specified destination starting at
the specified absolute
index. |
abstract int |
getBytes(int index,
java.nio.channels.FileChannel out,
long position,
int length)
Transfers this buffer's data starting at the specified absolute
index
to the specified channel starting at the given file position. |
abstract 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. |
abstract ByteBuf |
getBytes(int index,
java.io.OutputStream out,
int length)
Transfers this buffer's data to the specified stream starting at the
specified absolute
index. |
abstract char |
getChar(int index)
Gets a 2-byte UTF-16 character at the specified absolute
index in this buffer. |
abstract java.lang.CharSequence |
getCharSequence(int index,
int length,
java.nio.charset.Charset charset)
Gets a
CharSequence with the given length at the given index. |
abstract double |
getDouble(int index)
Gets a 64-bit floating point number at the specified absolute
index in this buffer. |
double |
getDoubleLE(int index)
Gets a 64-bit floating point number at the specified absolute
index in this buffer in Little Endian Byte Order. |
abstract float |
getFloat(int index)
Gets a 32-bit floating point number at the specified absolute
index in this buffer. |
float |
getFloatLE(int index)
Gets a 32-bit floating point number at the specified absolute
index in this buffer in Little Endian Byte Order. |
abstract int |
getInt(int index)
Gets a 32-bit integer at the specified absolute
index in
this buffer. |
abstract int |
getIntLE(int index)
Gets a 32-bit integer at the specified absolute
index in
this buffer with Little Endian Byte Order. |
abstract long |
getLong(int index)
Gets a 64-bit long integer at the specified absolute
index in
this buffer. |
abstract long |
getLongLE(int index)
Gets a 64-bit long integer at the specified absolute
index in
this buffer in Little Endian Byte Order. |
abstract int |
getMedium(int index)
Gets a 24-bit medium integer at the specified absolute
index in
this buffer. |
abstract int |
getMediumLE(int index)
Gets a 24-bit medium integer at the specified absolute
index in
this buffer in the Little Endian Byte Order. |
abstract short |
getShort(int index)
Gets a 16-bit short integer at the specified absolute
index in
this buffer. |
abstract short |
getShortLE(int index)
Gets a 16-bit short integer at the specified absolute
index in
this buffer in Little Endian Byte Order. |
abstract short |
getUnsignedByte(int index)
Gets an unsigned byte at the specified absolute
index in this
buffer. |
abstract long |
getUnsignedInt(int index)
Gets an unsigned 32-bit integer at the specified absolute
index
in this buffer. |
abstract long |
getUnsignedIntLE(int index)
Gets an unsigned 32-bit integer at the specified absolute
index
in this buffer in Little Endian Byte Order. |
abstract int |
getUnsignedMedium(int index)
Gets an unsigned 24-bit medium integer at the specified absolute
index in this buffer. |
abstract int |
getUnsignedMediumLE(int index)
Gets an unsigned 24-bit medium integer at the specified absolute
index in this buffer in Little Endian Byte Order. |
abstract int |
getUnsignedShort(int index)
Gets an unsigned 16-bit short integer at the specified absolute
index in this buffer. |
abstract int |
getUnsignedShortLE(int index)
Gets an unsigned 16-bit short integer at the specified absolute
index in this buffer in Little Endian Byte Order. |
abstract boolean |
hasArray()
Returns
true if and only if this buffer has a backing byte array. |
abstract int |
hashCode()
Returns a hash code which was calculated from the content of this
buffer.
|
abstract boolean |
hasMemoryAddress()
Returns
true if and only if this buffer has a reference to the low-level memory address that points
to the backing data. |
abstract int |
indexOf(int fromIndex,
int toIndex,
byte value)
Locates the first occurrence of the specified
value in this
buffer. |
abstract java.nio.ByteBuffer |
internalNioBuffer(int index,
int length)
Internal use only: Exposes the internal NIO buffer.
|
boolean |
isContiguous()
Returns
true if this ByteBuf implementation is backed by a single memory region. |
abstract boolean |
isDirect()
Returns
true if and only if this buffer is backed by an
NIO direct buffer. |
abstract boolean |
isReadable()
Returns
true
if and only if (this.writerIndex - this.readerIndex) is greater
than 0. |
abstract boolean |
isReadable(int size)
Returns
true if and only if this buffer contains equal to or more than the specified number of elements. |
abstract boolean |
isReadOnly()
Returns
true if and only if this buffer is read-only. |
abstract boolean |
isWritable()
Returns
true
if and only if (this.capacity - this.writerIndex) is greater
than 0. |
abstract boolean |
isWritable(int size)
Returns
true if and only if this buffer has enough room to allow writing the specified number of
elements. |
abstract ByteBuf |
markReaderIndex()
Marks the current
readerIndex in this buffer. |
abstract ByteBuf |
markWriterIndex()
Marks the current
writerIndex in this buffer. |
abstract int |
maxCapacity()
Returns the maximum allowed capacity of this buffer.
|
int |
maxFastWritableBytes()
Returns the maximum number of bytes which can be written for certain without involving
an internal reallocation or data-copy.
|
abstract int |
maxWritableBytes()
Returns the maximum possible number of writable bytes, which is equal to
(this.maxCapacity - this.writerIndex). |
abstract long |
memoryAddress()
Returns the low-level memory address that point to the first byte of ths backing data.
|
abstract java.nio.ByteBuffer |
nioBuffer()
Exposes this buffer's readable bytes as an NIO
ByteBuffer. |
abstract java.nio.ByteBuffer |
nioBuffer(int index,
int length)
Exposes this buffer's sub-region as an NIO
ByteBuffer. |
abstract int |
nioBufferCount()
Returns the maximum number of NIO
ByteBuffers that consist this buffer. |
abstract java.nio.ByteBuffer[] |
nioBuffers()
Exposes this buffer's readable bytes as an NIO
ByteBuffer's. |
abstract java.nio.ByteBuffer[] |
nioBuffers(int index,
int length)
Exposes this buffer's bytes as an NIO
ByteBuffer's for the specified index and length
The returned buffer either share or contains the copied content of this buffer, while changing
the position and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. |
abstract java.nio.ByteOrder |
order()
已过时。
use the Little Endian accessors, e.g.
getShortLE, getIntLE
instead of creating a buffer with swapped endianness. |
abstract ByteBuf |
order(java.nio.ByteOrder endianness)
已过时。
use the Little Endian accessors, e.g.
getShortLE, getIntLE
instead of creating a buffer with swapped endianness. |
abstract int |
readableBytes()
Returns the number of readable bytes which is equal to
(this.writerIndex - this.readerIndex). |
abstract boolean |
readBoolean()
Gets a boolean at the current
readerIndex and increases
the readerIndex by 1 in this buffer. |
abstract byte |
readByte()
Gets a byte at the current
readerIndex and increases
the readerIndex by 1 in this buffer. |
abstract ByteBuf |
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). |
abstract ByteBuf |
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). |
abstract ByteBuf |
readBytes(ByteBuf 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. |
abstract ByteBuf |
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. |
abstract ByteBuf |
readBytes(ByteBuf 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). |
abstract ByteBuf |
readBytes(ByteBuf 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). |
abstract int |
readBytes(java.nio.channels.FileChannel out,
long position,
int length)
Transfers this buffer's data starting at the current
readerIndex
to the specified channel starting at the given file position. |
abstract int |
readBytes(java.nio.channels.GatheringByteChannel out,
int length)
Transfers this buffer's data to the specified stream starting at the
current
readerIndex. |
abstract ByteBuf |
readBytes(int length)
Transfers this buffer's data to a newly created buffer starting at
the current
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length). |
abstract ByteBuf |
readBytes(java.io.OutputStream out,
int length)
Transfers this buffer's data to the specified stream starting at the
current
readerIndex. |
abstract char |
readChar()
Gets a 2-byte UTF-16 character at the current
readerIndex
and increases the readerIndex by 2 in this buffer. |
abstract java.lang.CharSequence |
readCharSequence(int length,
java.nio.charset.Charset charset)
Gets a
CharSequence with the given length at the current readerIndex
and increases the readerIndex by the given length. |
abstract double |
readDouble()
Gets a 64-bit floating point number at the current
readerIndex
and increases the readerIndex by 8 in this buffer. |
double |
readDoubleLE()
Gets a 64-bit floating point number at the current
readerIndex
in Little Endian Byte Order and increases the readerIndex
by 8 in this buffer. |
abstract int |
readerIndex()
Returns the
readerIndex of this buffer. |
abstract ByteBuf |
readerIndex(int readerIndex)
Sets the
readerIndex of this buffer. |
abstract float |
readFloat()
Gets a 32-bit floating point number at the current
readerIndex
and increases the readerIndex by 4 in this buffer. |
float |
readFloatLE()
Gets a 32-bit floating point number at the current
readerIndex
in Little Endian Byte Order and increases the readerIndex
by 4 in this buffer. |
abstract int |
readInt()
Gets a 32-bit integer at the current
readerIndex
and increases the readerIndex by 4 in this buffer. |
abstract int |
readIntLE()
Gets a 32-bit integer at the current
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 4 in this buffer. |
abstract long |
readLong()
Gets a 64-bit integer at the current
readerIndex
and increases the readerIndex by 8 in this buffer. |
abstract long |
readLongLE()
Gets a 64-bit integer at the current
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 8 in this buffer. |
abstract int |
readMedium()
Gets a 24-bit medium integer at the current
readerIndex
and increases the readerIndex by 3 in this buffer. |
abstract int |
readMediumLE()
Gets a 24-bit medium integer at the current
readerIndex
in the Little Endian Byte Order and increases the
readerIndex by 3 in this buffer. |
abstract ByteBuf |
readRetainedSlice(int length)
Returns a new retained slice of this buffer's sub-region starting at the current
readerIndex and increases the readerIndex by the size
of the new slice (= length). |
abstract short |
readShort()
Gets a 16-bit short integer at the current
readerIndex
and increases the readerIndex by 2 in this buffer. |
abstract short |
readShortLE()
Gets a 16-bit short integer at the current
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 2 in this buffer. |
abstract ByteBuf |
readSlice(int length)
Returns a new slice of this buffer's sub-region starting at the current
readerIndex and increases the readerIndex by the size
of the new slice (= length). |
abstract short |
readUnsignedByte()
Gets an unsigned byte at the current
readerIndex and increases
the readerIndex by 1 in this buffer. |
abstract long |
readUnsignedInt()
Gets an unsigned 32-bit integer at the current
readerIndex
and increases the readerIndex by 4 in this buffer. |
abstract long |
readUnsignedIntLE()
Gets an unsigned 32-bit integer at the current
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 4 in this buffer. |
abstract int |
readUnsignedMedium()
Gets an unsigned 24-bit medium integer at the current
readerIndex
and increases the readerIndex by 3 in this buffer. |
abstract int |
readUnsignedMediumLE()
Gets an unsigned 24-bit medium integer at the current
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 3 in this buffer. |
abstract int |
readUnsignedShort()
Gets an unsigned 16-bit short integer at the current
readerIndex
and increases the readerIndex by 2 in this buffer. |
abstract int |
readUnsignedShortLE()
Gets an unsigned 16-bit short integer at the current
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 2 in this buffer. |
abstract ByteBuf |
resetReaderIndex()
Repositions the current
readerIndex to the marked
readerIndex in this buffer. |
abstract ByteBuf |
resetWriterIndex()
Repositions the current
writerIndex to the marked
writerIndex in this buffer. |
abstract ByteBuf |
retain()
Increases the reference count by
1. |
abstract ByteBuf |
retain(int increment)
Increases the reference count by the specified
increment. |
abstract ByteBuf |
retainedDuplicate()
Returns a retained buffer which shares the whole region of this buffer.
|
abstract ByteBuf |
retainedSlice()
Returns a retained slice of this buffer's readable bytes.
|
abstract ByteBuf |
retainedSlice(int index,
int length)
Returns a retained slice of this buffer's sub-region.
|
abstract ByteBuf |
setBoolean(int index,
boolean value)
Sets the specified boolean at the specified absolute
index in this
buffer. |
abstract ByteBuf |
setByte(int index,
int value)
Sets the specified byte at the specified absolute
index in this
buffer. |
abstract ByteBuf |
setBytes(int index,
byte[] src)
Transfers the specified source array's data to this buffer starting at
the specified absolute
index. |
abstract ByteBuf |
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. |
abstract ByteBuf |
setBytes(int index,
ByteBuf src)
Transfers the specified source buffer's data to this buffer starting at
the specified absolute
index until the source buffer becomes
unreadable. |
abstract ByteBuf |
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. |
abstract ByteBuf |
setBytes(int index,
ByteBuf src,
int length)
Transfers the specified source buffer's data to this buffer starting at
the specified absolute
index. |
abstract ByteBuf |
setBytes(int index,
ByteBuf src,
int srcIndex,
int length)
Transfers the specified source buffer's data to this buffer starting at
the specified absolute
index. |
abstract int |
setBytes(int index,
java.nio.channels.FileChannel in,
long position,
int length)
Transfers the content of the specified source channel starting at the given file position
to this buffer starting at the specified absolute
index. |
abstract 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. |
abstract 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. |
abstract ByteBuf |
setChar(int index,
int value)
Sets the specified 2-byte UTF-16 character at the specified absolute
index in this buffer. |
abstract int |
setCharSequence(int index,
java.lang.CharSequence sequence,
java.nio.charset.Charset charset)
Writes the specified
CharSequence at the given index. |
abstract ByteBuf |
setDouble(int index,
double value)
Sets the specified 64-bit floating-point number at the specified
absolute
index in this buffer. |
ByteBuf |
setDoubleLE(int index,
double value)
Sets the specified 64-bit floating-point number at the specified
absolute
index in this buffer in Little Endian Byte Order. |
abstract ByteBuf |
setFloat(int index,
float value)
Sets the specified 32-bit floating-point number at the specified
absolute
index in this buffer. |
ByteBuf |
setFloatLE(int index,
float value)
Sets the specified 32-bit floating-point number at the specified
absolute
index in this buffer in Little Endian Byte Order. |
abstract ByteBuf |
setIndex(int readerIndex,
int writerIndex)
Sets the
readerIndex and writerIndex of this buffer
in one shot. |
abstract ByteBuf |
setInt(int index,
int value)
Sets the specified 32-bit integer at the specified absolute
index in this buffer. |
abstract ByteBuf |
setIntLE(int index,
int value)
Sets the specified 32-bit integer at the specified absolute
index in this buffer with Little Endian byte order
. |
abstract ByteBuf |
setLong(int index,
long value)
Sets the specified 64-bit long integer at the specified absolute
index in this buffer. |
abstract ByteBuf |
setLongLE(int index,
long value)
Sets the specified 64-bit long integer at the specified absolute
index in this buffer in Little Endian Byte Order. |
abstract ByteBuf |
setMedium(int index,
int value)
Sets the specified 24-bit medium integer at the specified absolute
index in this buffer. |
abstract ByteBuf |
setMediumLE(int index,
int value)
Sets the specified 24-bit medium integer at the specified absolute
index in this buffer in the Little Endian Byte Order. |
abstract ByteBuf |
setShort(int index,
int value)
Sets the specified 16-bit short integer at the specified absolute
index in this buffer. |
abstract ByteBuf |
setShortLE(int index,
int value)
Sets the specified 16-bit short integer at the specified absolute
index in this buffer with the Little Endian Byte Order. |
abstract ByteBuf |
setZero(int index,
int length)
Fills this buffer with NUL (0x00) starting at the specified
absolute
index. |
abstract ByteBuf |
skipBytes(int length)
Increases the current
readerIndex by the specified
length in this buffer. |
abstract ByteBuf |
slice()
Returns a slice of this buffer's readable bytes.
|
abstract ByteBuf |
slice(int index,
int length)
Returns a slice of this buffer's sub-region.
|
abstract java.lang.String |
toString()
Returns the string representation of this buffer.
|
abstract java.lang.String |
toString(java.nio.charset.Charset charset)
Decodes this buffer's readable bytes into a string with the specified
character set name.
|
abstract java.lang.String |
toString(int index,
int length,
java.nio.charset.Charset charset)
Decodes this buffer's sub-region into a string with the specified
character set.
|
abstract ByteBuf |
touch()
Records the current access location of this object for debugging purposes.
|
abstract ByteBuf |
touch(java.lang.Object hint)
Records the current access location of this object with an additional arbitrary information for debugging
purposes.
|
abstract ByteBuf |
unwrap()
Return the underlying buffer instance if this buffer is a wrapper of another buffer.
|
abstract int |
writableBytes()
Returns the number of writable bytes which is equal to
(this.capacity - this.writerIndex). |
abstract ByteBuf |
writeBoolean(boolean value)
Sets the specified boolean at the current
writerIndex
and increases the writerIndex by 1 in this buffer. |
abstract ByteBuf |
writeByte(int value)
Sets the specified byte at the current
writerIndex
and increases the writerIndex by 1 in this buffer. |
abstract ByteBuf |
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). |
abstract ByteBuf |
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). |
abstract ByteBuf |
writeBytes(ByteBuf 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. |
abstract ByteBuf |
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. |
abstract ByteBuf |
writeBytes(ByteBuf 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). |
abstract ByteBuf |
writeBytes(ByteBuf 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). |
abstract int |
writeBytes(java.nio.channels.FileChannel in,
long position,
int length)
Transfers the content of the specified channel starting at the given file position
to this buffer starting at the current
writerIndex and increases the
writerIndex by the number of the transferred bytes. |
abstract int |
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. |
abstract 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. |
abstract ByteBuf |
writeChar(int value)
Sets the specified 2-byte UTF-16 character at the current
writerIndex and increases the writerIndex by 2
in this buffer. |
abstract int |
writeCharSequence(java.lang.CharSequence sequence,
java.nio.charset.Charset charset)
Writes the specified
CharSequence at the current writerIndex and increases
the writerIndex by the written bytes. |
abstract ByteBuf |
writeDouble(double value)
Sets the specified 64-bit floating point number at the current
writerIndex and increases the writerIndex by 8
in this buffer. |
ByteBuf |
writeDoubleLE(double value)
Sets the specified 64-bit floating point number at the current
writerIndex in Little Endian Byte Order and increases
the writerIndex by 8 in this buffer. |
abstract ByteBuf |
writeFloat(float value)
Sets the specified 32-bit floating point number at the current
writerIndex and increases the writerIndex by 4
in this buffer. |
ByteBuf |
writeFloatLE(float value)
Sets the specified 32-bit floating point number at the current
writerIndex in Little Endian Byte Order and increases
the writerIndex by 4 in this buffer. |
abstract ByteBuf |
writeInt(int value)
Sets the specified 32-bit integer at the current
writerIndex
and increases the writerIndex by 4 in this buffer. |
abstract ByteBuf |
writeIntLE(int value)
Sets the specified 32-bit integer at the current
writerIndex
in the Little Endian Byte Order and increases the writerIndex
by 4 in this buffer. |
abstract ByteBuf |
writeLong(long value)
Sets the specified 64-bit long integer at the current
writerIndex and increases the writerIndex by 8
in this buffer. |
abstract ByteBuf |
writeLongLE(long value)
Sets the specified 64-bit long integer at the current
writerIndex in the Little Endian Byte Order and
increases the writerIndex by 8
in this buffer. |
abstract ByteBuf |
writeMedium(int value)
Sets the specified 24-bit medium integer at the current
writerIndex and increases the writerIndex by 3
in this buffer. |
abstract ByteBuf |
writeMediumLE(int value)
Sets the specified 24-bit medium integer at the current
writerIndex in the Little Endian Byte Order and
increases the writerIndex by 3 in this
buffer. |
abstract int |
writerIndex()
Returns the
writerIndex of this buffer. |
abstract ByteBuf |
writerIndex(int writerIndex)
Sets the
writerIndex of this buffer. |
abstract ByteBuf |
writeShort(int value)
Sets the specified 16-bit short integer at the current
writerIndex and increases the writerIndex by 2
in this buffer. |
abstract ByteBuf |
writeShortLE(int value)
Sets the specified 16-bit short integer in the Little Endian Byte
Order at the current
writerIndex and increases the
writerIndex by 2 in this buffer. |
abstract ByteBuf |
writeZero(int length)
Fills this buffer with NUL (0x00) starting at the current
writerIndex and increases the writerIndex by the
specified length. |
refCnt, release, releasepublic abstract int capacity()
public abstract ByteBuf capacity(int newCapacity)
newCapacity is less than the current
capacity, the content of this buffer is truncated. If the newCapacity is greater
than the current capacity, the buffer is appended with unspecified data whose length is
(newCapacity - currentCapacity).java.lang.IllegalArgumentException - if the newCapacity is greater than maxCapacity()public abstract int maxCapacity()
capacity().public abstract ByteBufAllocator alloc()
ByteBufAllocator which created this buffer.@Deprecated public abstract java.nio.ByteOrder order()
getShortLE, getIntLE
instead of creating a buffer with swapped endianness.@Deprecated public abstract ByteBuf order(java.nio.ByteOrder endianness)
getShortLE, getIntLE
instead of creating a buffer with swapped endianness.endianness which shares the whole region,
indexes, and marks of this buffer. Modifying the content, the indexes, or the marks of the
returned buffer or this buffer affects each other's content, indexes, and marks. If the
specified endianness is identical to this buffer's byte order, this method can
return this. This method does not modify readerIndex or writerIndex
of this buffer.public abstract ByteBuf unwrap()
null if this buffer is not a wrapperpublic abstract boolean isDirect()
true if and only if this buffer is backed by an
NIO direct buffer.public abstract boolean isReadOnly()
true if and only if this buffer is read-only.public abstract ByteBuf asReadOnly()
public abstract int readerIndex()
readerIndex of this buffer.public abstract ByteBuf readerIndex(int readerIndex)
readerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified readerIndex is
less than 0 or
greater than this.writerIndexpublic abstract int writerIndex()
writerIndex of this buffer.public abstract ByteBuf writerIndex(int writerIndex)
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified writerIndex is
less than this.readerIndex or
greater than this.capacitypublic abstract ByteBuf 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.The following code will also fail:ByteBufbuf =Unpooled.buffer(8); // IndexOutOfBoundsException is thrown because the specified // readerIndex (2) cannot be greater than the current writerIndex (0). buf.readerIndex(2); buf.writerIndex(4);
// Create a buffer whose readerIndex, writerIndex and capacity are // 0, 8 and 8 respectively.By contrast, this method guarantees that it never throws anByteBufbuf =Unpooled.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);
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);
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.capacitypublic abstract int readableBytes()
(this.writerIndex - this.readerIndex).public abstract int writableBytes()
(this.capacity - this.writerIndex).public abstract int maxWritableBytes()
(this.maxCapacity - this.writerIndex).public int maxFastWritableBytes()
writableBytes()
and ≤ maxWritableBytes().public abstract boolean isReadable()
true
if and only if (this.writerIndex - this.readerIndex) is greater
than 0.public abstract boolean isReadable(int size)
true if and only if this buffer contains equal to or more than the specified number of elements.public abstract boolean isWritable()
true
if and only if (this.capacity - this.writerIndex) is greater
than 0.public abstract boolean isWritable(int size)
true if and only if this buffer has enough room to allow writing the specified number of
elements.public abstract ByteBuf 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.
public abstract ByteBuf 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.public abstract ByteBuf resetReaderIndex()
readerIndex to the marked
readerIndex in this buffer.java.lang.IndexOutOfBoundsException - if the current writerIndex is less than the marked
readerIndexpublic abstract ByteBuf 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.public abstract ByteBuf resetWriterIndex()
writerIndex to the marked
writerIndex in this buffer.java.lang.IndexOutOfBoundsException - if the current readerIndex is greater than the marked
writerIndexpublic abstract ByteBuf 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.
public abstract ByteBuf discardSomeReadBytes()
discardReadBytes() except that this method might discard
some, all, or none of read bytes depending on its internal implementation to reduce
overall memory bandwidth consumption at the cost of potentially additional memory
consumption.public abstract ByteBuf ensureWritable(int minWritableBytes)
capacity() to make sure the number of
writable bytes is equal to or greater than the
specified value. If there are enough writable bytes in this buffer, this method
returns with no side effect.minWritableBytes - the expected minimum number of writable bytesjava.lang.IndexOutOfBoundsException - if writerIndex() + minWritableBytes > maxCapacity().capacity(int)public abstract int ensureWritable(int minWritableBytes,
boolean force)
capacity() to make sure the number of
writable bytes is equal to or greater than the
specified value. Unlike ensureWritable(int), this method returns a status code.minWritableBytes - the expected minimum number of writable bytesforce - When writerIndex() + minWritableBytes > maxCapacity():
true - the capacity of the buffer is expanded to maxCapacity()false - the capacity of the buffer is unchanged0 if the buffer has enough writable bytes, and its capacity is unchanged.
1 if the buffer does not have enough bytes, and its capacity is unchanged.
2 if the buffer has enough writable bytes, and its capacity has been increased.
3 if the buffer does not have enough bytes, but its capacity has been
increased to its maximum.public abstract boolean getBoolean(int index)
readerIndex or writerIndex
of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 1 is greater than this.capacitypublic abstract byte getByte(int index)
index in this buffer.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 1 is greater than this.capacitypublic abstract short getUnsignedByte(int index)
index in this
buffer. This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 1 is greater than this.capacitypublic abstract short getShort(int index)
index in
this buffer. This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract short getShortLE(int index)
index in
this buffer in Little Endian Byte Order. This method does not modify
readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract int getUnsignedShort(int index)
index in this buffer. This method does not modify
readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract int getUnsignedShortLE(int index)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract int getMedium(int index)
index in
this buffer. This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 3 is greater than this.capacitypublic abstract int getMediumLE(int index)
index in
this buffer in the Little Endian Byte Order. This method does not
modify readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 3 is greater than this.capacitypublic abstract int getUnsignedMedium(int index)
index in this buffer. This method does not modify
readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 3 is greater than this.capacitypublic abstract int getUnsignedMediumLE(int index)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 3 is greater than this.capacitypublic abstract int getInt(int index)
index in
this buffer. This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract int getIntLE(int index)
index in
this buffer with Little Endian Byte Order. This method does not
modify readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract long getUnsignedInt(int index)
index
in this buffer. This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract long getUnsignedIntLE(int index)
index
in this buffer in Little Endian Byte Order. This method does not
modify readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract long getLong(int index)
index in
this buffer. This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic abstract long getLongLE(int index)
index in
this buffer in Little Endian Byte Order. This method does not
modify readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic abstract char getChar(int index)
index in this buffer. This method does not modify
readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract float getFloat(int index)
index in this buffer. This method does not modify
readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic float getFloatLE(int index)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract double getDouble(int index)
index in this buffer. This method does not modify
readerIndex or writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic double getDoubleLE(int index)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or
writerIndex of this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic abstract ByteBuf getBytes(int index, ByteBuf dst)
index until the destination becomes
non-writable. This method is basically same with
getBytes(int, ByteBuf, int, int), except that this
method increases the writerIndex of the destination by the
number of the transferred bytes while
getBytes(int, ByteBuf, int, int) does not.
This method does not modify readerIndex or writerIndex of
the source buffer (i.e. this).java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + dst.writableBytes is greater than
this.capacitypublic abstract ByteBuf getBytes(int index, ByteBuf dst, int length)
index. This method is basically same
with getBytes(int, ByteBuf, int, int), except that this
method increases the writerIndex of the destination by the
number of the transferred bytes while
getBytes(int, ByteBuf, int, int) does not.
This method does not modify readerIndex or writerIndex of
the source buffer (i.e. this).length - the number of bytes to transferjava.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.writableBytespublic abstract ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length)
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 destinationlength - the number of bytes to transferjava.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.capacitypublic abstract ByteBuf getBytes(int index, byte[] dst)
index.
This method does not modify readerIndex or writerIndex of
this bufferjava.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + dst.length is greater than
this.capacitypublic abstract ByteBuf getBytes(int index, byte[] dst, int dstIndex, int length)
index.
This method does not modify readerIndex or writerIndex
of this buffer.dstIndex - the first index of the destinationlength - the number of bytes to transferjava.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.lengthpublic abstract ByteBuf getBytes(int index, java.nio.ByteBuffer dst)
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.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + dst.remaining() is greater than
this.capacitypublic abstract ByteBuf getBytes(int index, java.io.OutputStream out, int length) throws java.io.IOException
index.
This method does not modify readerIndex or writerIndex of
this buffer.length - the number of bytes to transferjava.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than
this.capacityjava.io.IOException - if the specified stream threw an exception during I/Opublic abstract int getBytes(int index,
java.nio.channels.GatheringByteChannel out,
int length)
throws java.io.IOException
index.
This method does not modify readerIndex or writerIndex of
this buffer.length - the maximum number of bytes to transferjava.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than
this.capacityjava.io.IOException - if the specified channel threw an exception during I/Opublic abstract int getBytes(int index,
java.nio.channels.FileChannel out,
long position,
int length)
throws java.io.IOException
index
to the specified channel starting at the given file position.
This method does not modify readerIndex or writerIndex of
this buffer. This method does not modify the channel's position.position - the file position at which the transfer is to beginlength - the maximum number of bytes to transferjava.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than
this.capacityjava.io.IOException - if the specified channel threw an exception during I/Opublic abstract java.lang.CharSequence getCharSequence(int index,
int length,
java.nio.charset.Charset charset)
CharSequence with the given length at the given index.length - the length to readcharset - that should be usedjava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract ByteBuf setBoolean(int index, boolean value)
index in this
buffer.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 1 is greater than this.capacitypublic abstract ByteBuf setByte(int index, int value)
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.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 1 is greater than this.capacitypublic abstract ByteBuf setShort(int index, int value)
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.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract ByteBuf setShortLE(int index, int value)
index in this buffer with the Little Endian Byte Order.
The 16 high-order bits of the specified value are ignored.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract ByteBuf setMedium(int index, int value)
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.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 3 is greater than this.capacitypublic abstract ByteBuf setMediumLE(int index, int value)
index in this buffer in the Little Endian Byte Order.
Please note that the most significant byte is ignored in the
specified value.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 3 is greater than this.capacitypublic abstract ByteBuf setInt(int index, int value)
index in this buffer.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract ByteBuf setIntLE(int index, int value)
index in this buffer with Little Endian byte order
.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract ByteBuf setLong(int index, long value)
index in this buffer.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic abstract ByteBuf setLongLE(int index, long value)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic abstract ByteBuf setChar(int index, int value)
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.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 2 is greater than this.capacitypublic abstract ByteBuf setFloat(int index, float value)
index in this buffer.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic ByteBuf setFloatLE(int index, float value)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 4 is greater than this.capacitypublic abstract ByteBuf setDouble(int index, double value)
index in this buffer.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic ByteBuf setDoubleLE(int index, double value)
index in this buffer in Little Endian Byte Order.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
index + 8 is greater than this.capacitypublic abstract ByteBuf setBytes(int index, ByteBuf src)
index until the source buffer becomes
unreadable. This method is basically same with
setBytes(int, ByteBuf, int, int), except that this
method increases the readerIndex of the source buffer by
the number of the transferred bytes while
setBytes(int, ByteBuf, int, int) does not.
This method does not modify readerIndex or writerIndex of
this buffer (i.e. this).java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + src.readableBytes is greater than
this.capacitypublic abstract ByteBuf setBytes(int index, ByteBuf src, int length)
index. This method is basically same
with setBytes(int, ByteBuf, int, int), except that this
method increases the readerIndex of the source buffer by
the number of the transferred bytes while
setBytes(int, ByteBuf, int, int) does not.
This method does not modify readerIndex or writerIndex of
this buffer (i.e. this).length - the number of bytes to transferjava.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.readableBytespublic abstract ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length)
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 sourcelength - the number of bytes to transferjava.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.capacitypublic abstract ByteBuf setBytes(int index, byte[] src)
index.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + src.length is greater than
this.capacitypublic abstract ByteBuf setBytes(int index, byte[] src, int srcIndex, int length)
index.
This method does not modify readerIndex or writerIndex of
this buffer.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.lengthpublic abstract ByteBuf setBytes(int index, java.nio.ByteBuffer src)
index until the source buffer's position
reaches its limit.
This method does not modify readerIndex or writerIndex of
this buffer.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + src.remaining() is greater than
this.capacitypublic abstract int setBytes(int index,
java.io.InputStream in,
int length)
throws java.io.IOException
index.
This method does not modify readerIndex or writerIndex of
this buffer.length - the number of bytes to transfer-1 if the specified InputStream reached EOF.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than this.capacityjava.io.IOException - if the specified stream threw an exception during I/Opublic abstract int setBytes(int index,
java.nio.channels.ScatteringByteChannel in,
int length)
throws java.io.IOException
index.
This method does not modify readerIndex or writerIndex of
this buffer.length - the maximum number of bytes to transfer-1 if the specified channel is closed or it reached EOF.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than this.capacityjava.io.IOException - if the specified channel threw an exception during I/Opublic abstract int setBytes(int index,
java.nio.channels.FileChannel in,
long position,
int length)
throws java.io.IOException
index.
This method does not modify readerIndex or writerIndex of
this buffer. This method does not modify the channel's position.position - the file position at which the transfer is to beginlength - the maximum number of bytes to transfer-1 if the specified channel is closed or it reached EOF.java.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than this.capacityjava.io.IOException - if the specified channel threw an exception during I/Opublic abstract ByteBuf setZero(int index, int length)
index.
This method does not modify readerIndex or writerIndex of
this buffer.length - the number of NULs to write to the bufferjava.lang.IndexOutOfBoundsException - if the specified index is less than 0 or
if index + length is greater than this.capacitypublic abstract int setCharSequence(int index,
java.lang.CharSequence sequence,
java.nio.charset.Charset charset)
CharSequence at the given index.
The writerIndex is not modified by this method.index - on which the sequence should be writtensequence - to writecharset - that should be used.java.lang.IndexOutOfBoundsException - if the sequence at the given index would be out of bounds of the buffer capacitypublic abstract boolean readBoolean()
readerIndex and increases
the readerIndex by 1 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 1public abstract byte readByte()
readerIndex and increases
the readerIndex by 1 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 1public abstract short readUnsignedByte()
readerIndex and increases
the readerIndex by 1 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 1public abstract short readShort()
readerIndex
and increases the readerIndex by 2 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 2public abstract short readShortLE()
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 2 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 2public abstract int readUnsignedShort()
readerIndex
and increases the readerIndex by 2 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 2public abstract int readUnsignedShortLE()
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 2 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 2public abstract int readMedium()
readerIndex
and increases the readerIndex by 3 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 3public abstract int readMediumLE()
readerIndex
in the Little Endian Byte Order and increases the
readerIndex by 3 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 3public abstract int readUnsignedMedium()
readerIndex
and increases the readerIndex by 3 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 3public abstract int readUnsignedMediumLE()
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 3 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 3public abstract int readInt()
readerIndex
and increases the readerIndex by 4 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 4public abstract int readIntLE()
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 4 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 4public abstract long readUnsignedInt()
readerIndex
and increases the readerIndex by 4 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 4public abstract long readUnsignedIntLE()
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 4 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 4public abstract long readLong()
readerIndex
and increases the readerIndex by 8 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 8public abstract long readLongLE()
readerIndex
in the Little Endian Byte Order and increases the readerIndex
by 8 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 8public abstract char readChar()
readerIndex
and increases the readerIndex by 2 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 2public abstract float readFloat()
readerIndex
and increases the readerIndex by 4 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 4public float readFloatLE()
readerIndex
in Little Endian Byte Order and increases the readerIndex
by 4 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 4public abstract double readDouble()
readerIndex
and increases the readerIndex by 8 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 8public double readDoubleLE()
readerIndex
in Little Endian Byte Order and increases the readerIndex
by 8 in this buffer.java.lang.IndexOutOfBoundsException - if this.readableBytes is less than 8public abstract ByteBuf readBytes(int length)
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length).
The returned buffer's readerIndex and writerIndex are
0 and length respectively.length - the number of bytes to transferjava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract ByteBuf readSlice(int length)
readerIndex and increases the readerIndex by the size
of the new slice (= length).
Also be aware that this method will NOT call retain() and so the
reference count will NOT be increased.
length - the size of the new slicejava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract ByteBuf readRetainedSlice(int length)
readerIndex and increases the readerIndex by the size
of the new slice (= length).
Note that this method returns a retained buffer unlike readSlice(int).
This method behaves similarly to readSlice(...).retain() except that this method may return
a buffer implementation that produces less garbage.
length - the size of the new slicejava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract ByteBuf readBytes(ByteBuf 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(ByteBuf, int, int), except that this method
increases the writerIndex of the destination by the number of
the transferred bytes while readBytes(ByteBuf, int, int)
does not.java.lang.IndexOutOfBoundsException - if dst.writableBytes is greater than
this.readableBytespublic abstract ByteBuf readBytes(ByteBuf dst, int length)
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length). This method
is basically same with readBytes(ByteBuf, int, int),
except that this method increases the writerIndex of the
destination by the number of the transferred bytes (= length)
while readBytes(ByteBuf, int, int) does not.java.lang.IndexOutOfBoundsException - if length is greater than this.readableBytes or
if length is greater than dst.writableBytespublic abstract ByteBuf readBytes(ByteBuf 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 transferjava.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.capacitypublic abstract ByteBuf readBytes(byte[] dst)
readerIndex and increases the readerIndex
by the number of the transferred bytes (= dst.length).java.lang.IndexOutOfBoundsException - if dst.length is greater than this.readableBytespublic abstract ByteBuf readBytes(byte[] 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 transferjava.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.lengthpublic abstract ByteBuf 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.readableBytespublic abstract ByteBuf readBytes(java.io.OutputStream out, int length) throws java.io.IOException
readerIndex.length - the number of bytes to transferjava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytesjava.io.IOException - if the specified stream threw an exception during I/Opublic abstract int readBytes(java.nio.channels.GatheringByteChannel out,
int length)
throws java.io.IOException
readerIndex.length - the maximum number of bytes to transferjava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytesjava.io.IOException - if the specified channel threw an exception during I/Opublic abstract java.lang.CharSequence readCharSequence(int length,
java.nio.charset.Charset charset)
CharSequence with the given length at the current readerIndex
and increases the readerIndex by the given length.length - the length to readcharset - that should be usedjava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract int readBytes(java.nio.channels.FileChannel out,
long position,
int length)
throws java.io.IOException
readerIndex
to the specified channel starting at the given file position.
This method does not modify the channel's position.position - the file position at which the transfer is to beginlength - the maximum number of bytes to transferjava.lang.IndexOutOfBoundsException - if length is greater than this.readableBytesjava.io.IOException - if the specified channel threw an exception during I/Opublic abstract ByteBuf skipBytes(int length)
readerIndex by the specified
length in this buffer.java.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract ByteBuf writeBoolean(boolean value)
writerIndex
and increases the writerIndex by 1 in this buffer.
If this.writableBytes is less than 1, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeByte(int value)
writerIndex
and increases the writerIndex by 1 in this buffer.
The 24 high-order bits of the specified value are ignored.
If this.writableBytes is less than 1, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeShort(int value)
writerIndex and increases the writerIndex by 2
in this buffer. The 16 high-order bits of the specified value are ignored.
If this.writableBytes is less than 2, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeShortLE(int value)
writerIndex and increases the
writerIndex by 2 in this buffer.
The 16 high-order bits of the specified value are ignored.
If this.writableBytes is less than 2, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeMedium(int value)
writerIndex and increases the writerIndex by 3
in this buffer.
If this.writableBytes is less than 3, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeMediumLE(int value)
writerIndex in the Little Endian Byte Order and
increases the writerIndex by 3 in this
buffer.
If this.writableBytes is less than 3, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeInt(int value)
writerIndex
and increases the writerIndex by 4 in this buffer.
If this.writableBytes is less than 4, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeIntLE(int value)
writerIndex
in the Little Endian Byte Order and increases the writerIndex
by 4 in this buffer.
If this.writableBytes is less than 4, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeLong(long value)
writerIndex and increases the writerIndex by 8
in this buffer.
If this.writableBytes is less than 8, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeLongLE(long value)
writerIndex in the Little Endian Byte Order and
increases the writerIndex by 8
in this buffer.
If this.writableBytes is less than 8, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeChar(int value)
writerIndex and increases the writerIndex by 2
in this buffer. The 16 high-order bits of the specified value are ignored.
If this.writableBytes is less than 2, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeFloat(float value)
writerIndex and increases the writerIndex by 4
in this buffer.
If this.writableBytes is less than 4, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public ByteBuf writeFloatLE(float value)
writerIndex in Little Endian Byte Order and increases
the writerIndex by 4 in this buffer.
If this.writableBytes is less than 4, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeDouble(double value)
writerIndex and increases the writerIndex by 8
in this buffer.
If this.writableBytes is less than 8, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public ByteBuf writeDoubleLE(double value)
writerIndex in Little Endian Byte Order and increases
the writerIndex by 8 in this buffer.
If this.writableBytes is less than 8, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeBytes(ByteBuf 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(ByteBuf, int, int), except that this method
increases the readerIndex of the source buffer by the number of
the transferred bytes while writeBytes(ByteBuf, int, int)
does not.
If this.writableBytes is less than src.readableBytes,
ensureWritable(int) will be called in an attempt to expand
capacity to accommodate.public abstract ByteBuf writeBytes(ByteBuf src, int length)
writerIndex and increases the writerIndex
by the number of the transferred bytes (= length). This method
is basically same with writeBytes(ByteBuf, int, int),
except that this method increases the readerIndex of the source
buffer by the number of the transferred bytes (= length) while
writeBytes(ByteBuf, int, int) does not.
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.length - the number of bytes to transferjava.lang.IndexOutOfBoundsException - if length is greater then src.readableBytespublic abstract ByteBuf writeBytes(ByteBuf src, int srcIndex, int length)
writerIndex and increases the writerIndex
by the number of the transferred bytes (= length).
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.srcIndex - the first index of the sourcelength - the number of bytes to transferjava.lang.IndexOutOfBoundsException - if the specified srcIndex is less than 0, or
if srcIndex + length is greater than src.capacitypublic abstract ByteBuf writeBytes(byte[] src)
writerIndex and increases the writerIndex
by the number of the transferred bytes (= src.length).
If this.writableBytes is less than src.length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.public abstract ByteBuf writeBytes(byte[] src, int srcIndex, int length)
writerIndex and increases the writerIndex
by the number of the transferred bytes (= length).
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.srcIndex - the first index of the sourcelength - the number of bytes to transferjava.lang.IndexOutOfBoundsException - if the specified srcIndex is less than 0, or
if srcIndex + length is greater than src.lengthpublic abstract ByteBuf 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.
If this.writableBytes is less than src.remaining(),
ensureWritable(int) will be called in an attempt to expand
capacity to accommodate.public abstract int writeBytes(java.io.InputStream in,
int length)
throws java.io.IOException
writerIndex and increases the
writerIndex by the number of the transferred bytes.
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.length - the number of bytes to transfer-1 if the specified InputStream reached EOF.java.io.IOException - if the specified stream threw an exception during I/Opublic abstract int writeBytes(java.nio.channels.ScatteringByteChannel in,
int length)
throws java.io.IOException
writerIndex and increases the
writerIndex by the number of the transferred bytes.
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.length - the maximum number of bytes to transfer-1 if the specified channel is closed or it reached EOF.java.io.IOException - if the specified channel threw an exception during I/Opublic abstract int writeBytes(java.nio.channels.FileChannel in,
long position,
int length)
throws java.io.IOException
writerIndex and increases the
writerIndex by the number of the transferred bytes.
This method does not modify the channel's position.
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.position - the file position at which the transfer is to beginlength - the maximum number of bytes to transfer-1 if the specified channel is closed or it reached EOF.java.io.IOException - if the specified channel threw an exception during I/Opublic abstract ByteBuf writeZero(int length)
writerIndex and increases the writerIndex by the
specified length.
If this.writableBytes is less than length, ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.length - the number of NULs to write to the bufferpublic abstract int writeCharSequence(java.lang.CharSequence sequence,
java.nio.charset.Charset charset)
CharSequence at the current writerIndex and increases
the writerIndex by the written bytes.
in this buffer.
If this.writableBytes is not large enough to write the whole sequence,
ensureWritable(int) will be called in an attempt to expand capacity to accommodate.sequence - to writecharset - that should be usedpublic abstract int indexOf(int fromIndex,
int toIndex,
byte value)
value in this
buffer. The search takes place from the specified fromIndex
(inclusive) to the specified toIndex (exclusive).
If fromIndex is greater than toIndex, the search is
performed in a reversed order from fromIndex (exclusive)
down to toIndex (inclusive).
Note that the lower index is always included and higher always excluded.
This method does not modify readerIndex or writerIndex of
this buffer.
-1 otherwise.public abstract int bytesBefore(byte value)
value in this
buffer. The search takes place from the current readerIndex
(inclusive) to the current writerIndex (exclusive).
This method does not modify readerIndex or writerIndex of
this buffer.
readerIndex
and the first occurrence if found. -1 otherwise.public abstract int bytesBefore(int length,
byte value)
value in this
buffer. The search starts from the current readerIndex
(inclusive) and lasts for the specified length.
This method does not modify readerIndex or writerIndex of
this buffer.
readerIndex
and the first occurrence if found. -1 otherwise.java.lang.IndexOutOfBoundsException - if length is greater than this.readableBytespublic abstract int bytesBefore(int index,
int length,
byte value)
value in this
buffer. The search starts from the specified index (inclusive)
and lasts for the specified length.
This method does not modify readerIndex or writerIndex of
this buffer.
index
and the first occurrence if found. -1 otherwise.java.lang.IndexOutOfBoundsException - if index + length is greater than this.capacitypublic abstract int forEachByte(ByteProcessor processor)
processor in ascending order.-1 if the processor iterated to or beyond the end of the readable bytes.
The last-visited index If the ByteProcessor.process(byte) returned false.public abstract int forEachByte(int index,
int length,
ByteProcessor processor)
processor in ascending order.
(i.e. index, (index + 1), .. (index + length - 1))-1 if the processor iterated to or beyond the end of the specified area.
The last-visited index If the ByteProcessor.process(byte) returned false.public abstract int forEachByteDesc(ByteProcessor processor)
processor in descending order.-1 if the processor iterated to or beyond the beginning of the readable bytes.
The last-visited index If the ByteProcessor.process(byte) returned false.public abstract int forEachByteDesc(int index,
int length,
ByteProcessor processor)
processor in descending order.
(i.e. (index + length - 1), (index + length - 2), ... index)-1 if the processor iterated to or beyond the beginning of the specified area.
The last-visited index If the ByteProcessor.process(byte) returned false.public abstract ByteBuf copy()
buf.copy(buf.readerIndex(), buf.readableBytes()).
This method does not modify readerIndex or writerIndex of
this buffer.public abstract ByteBuf copy(int index, int length)
readerIndex or writerIndex of
this buffer.public abstract ByteBuf slice()
buf.slice(buf.readerIndex(), buf.readableBytes()).
This method does not modify readerIndex or writerIndex of
this buffer.
Also be aware that this method will NOT call retain() and so the
reference count will NOT be increased.
public abstract ByteBuf retainedSlice()
buf.slice(buf.readerIndex(), buf.readableBytes()).
This method does not modify readerIndex or writerIndex of
this buffer.
Note that this method returns a retained buffer unlike slice().
This method behaves similarly to slice().retain() except that this method may return
a buffer implementation that produces less garbage.
public abstract ByteBuf slice(int index, int length)
readerIndex or writerIndex of
this buffer.
Also be aware that this method will NOT call retain() and so the
reference count will NOT be increased.
public abstract ByteBuf retainedSlice(int index, int length)
readerIndex or writerIndex of
this buffer.
Note that this method returns a retained buffer unlike slice(int, int).
This method behaves similarly to slice(...).retain() except that this method may return
a buffer implementation that produces less garbage.
public abstract ByteBuf duplicate()
readerIndex or writerIndex of
this buffer.
The reader and writer marks will not be duplicated. Also be aware that this method will
NOT call retain() and so the reference count will NOT be increased.
slice().
However this buffer will share the capacity of the underlying buffer, and therefore allows access to all of the
underlying content if necessary.public abstract ByteBuf retainedDuplicate()
buf.slice(0, buf.capacity()).
This method does not modify readerIndex or writerIndex of
this buffer.
Note that this method returns a retained buffer unlike slice(int, int).
This method behaves similarly to duplicate().retain() except that this method may return
a buffer implementation that produces less garbage.
public abstract int nioBufferCount()
ByteBuffers that consist this buffer. Note that nioBuffers()
or nioBuffers(int, int) might return a less number of ByteBuffers.-1 if this buffer has no underlying ByteBuffer.
the number of the underlying ByteBuffers if this buffer has at least one underlying
ByteBuffer. Note that this method does not return 0 to avoid confusion.nioBuffer(),
nioBuffer(int, int),
nioBuffers(),
nioBuffers(int, int)public abstract java.nio.ByteBuffer nioBuffer()
ByteBuffer. The returned buffer
either share or contains the copied content of this buffer, while changing the position
and limit of the returned NIO buffer does not affect the indexes and marks of this buffer.
This method is identical to buf.nioBuffer(buf.readerIndex(), buf.readableBytes()).
This method does not modify readerIndex or writerIndex of this buffer.
Please note that the returned NIO buffer will not see the changes of this buffer if this buffer
is a dynamic buffer and it adjusted its capacity.java.lang.UnsupportedOperationException - if this buffer cannot create a ByteBuffer that shares the content with itselfnioBufferCount(),
nioBuffers(),
nioBuffers(int, int)public abstract java.nio.ByteBuffer nioBuffer(int index,
int length)
ByteBuffer. The returned buffer
either share or contains the copied content of this buffer, while changing the position
and limit of the returned NIO buffer does not affect the indexes and marks of this buffer.
This method does not modify readerIndex or writerIndex of this buffer.
Please note that the returned NIO buffer will not see the changes of this buffer if this buffer
is a dynamic buffer and it adjusted its capacity.java.lang.UnsupportedOperationException - if this buffer cannot create a ByteBuffer that shares the content with itselfnioBufferCount(),
nioBuffers(),
nioBuffers(int, int)public abstract java.nio.ByteBuffer internalNioBuffer(int index,
int length)
public abstract java.nio.ByteBuffer[] nioBuffers()
ByteBuffer's. The returned buffer
either share or contains the copied content of this buffer, while changing the position
and limit of the returned NIO buffer does not affect the indexes and marks of this buffer.
This method does not modify readerIndex or writerIndex of this buffer.
Please note that the returned NIO buffer will not see the changes of this buffer if this buffer
is a dynamic buffer and it adjusted its capacity.java.lang.UnsupportedOperationException - if this buffer cannot create a ByteBuffer that shares the content with itselfnioBufferCount(),
nioBuffer(),
nioBuffer(int, int)public abstract java.nio.ByteBuffer[] nioBuffers(int index,
int length)
ByteBuffer's for the specified index and length
The returned buffer either share or contains the copied content of this buffer, while changing
the position and limit of the returned NIO buffer does not affect the indexes and marks of this buffer.
This method does not modify readerIndex or writerIndex of this buffer. Please note that the
returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic
buffer and it adjusted its capacity.java.lang.UnsupportedOperationException - if this buffer cannot create a ByteBuffer that shares the content with itselfnioBufferCount(),
nioBuffer(),
nioBuffer(int, int)public abstract boolean hasArray()
true if and only if this buffer has a backing byte array.
If this method returns true, you can safely call array() and
arrayOffset().public abstract byte[] array()
java.lang.UnsupportedOperationException - if there no accessible backing byte arraypublic abstract int arrayOffset()
java.lang.UnsupportedOperationException - if there no accessible backing byte arraypublic abstract boolean hasMemoryAddress()
true if and only if this buffer has a reference to the low-level memory address that points
to the backing data.public abstract long memoryAddress()
java.lang.UnsupportedOperationException - if this buffer does not support accessing the low-level memory addresspublic boolean isContiguous()
true if this ByteBuf implementation is backed by a single memory region.
Composite buffer implementations must return false even if they currently hold ≤ 1 components.
For buffers that return true, it's guaranteed that a successful call to discardReadBytes()
will increase the value of maxFastWritableBytes() by the current readerIndex.
This method will return false by default, and a false return value does not necessarily
mean that the implementation is composite or that it is not backed by a single memory region.
public ByteBuf asByteBuf()
ByteBuf can turn into itself.asByteBuf 在接口中 ByteBufConvertibleByteBuf instance.public abstract java.lang.String toString(java.nio.charset.Charset charset)
buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName).
This method does not modify readerIndex or writerIndex of
this buffer.java.nio.charset.UnsupportedCharsetException - if the specified character set name is not supported by the
current VMpublic abstract java.lang.String toString(int index,
int length,
java.nio.charset.Charset charset)
readerIndex or
writerIndex of this buffer.public abstract int hashCode()
hashCode 在类中 java.lang.Objectpublic abstract 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
ByteBuf type.equals 在类中 java.lang.Objectpublic abstract int compareTo(ByteBuf buffer)
strcmp,
memcmp and String.compareTo(String).compareTo 在接口中 java.lang.Comparable<ByteBuf>public abstract java.lang.String toString()
readerIndex(),
writerIndex() and capacity().toString 在类中 java.lang.Objectpublic abstract ByteBuf retain(int increment)
ReferenceCountedincrement.retain 在接口中 ReferenceCountedpublic abstract ByteBuf retain()
ReferenceCounted1.retain 在接口中 ReferenceCountedpublic abstract ByteBuf touch()
ReferenceCountedResourceLeakDetector. This method is a shortcut to touch(null).touch 在接口中 ReferenceCountedpublic abstract ByteBuf touch(java.lang.Object hint)
ReferenceCountedResourceLeakDetector.touch 在接口中 ReferenceCounted