Class ByteBuf
- All Implemented Interfaces:
ByteBufConvertible
,ReferenceCounted
,Comparable<ByteBuf>
- Direct Known Subclasses:
AbstractByteBuf
,EmptyByteBuf
,ReplayingDecoderByteBuf
,SwappedByteBuf
,WrappedByteBuf
byte[]
) and NIO buffers.
Creation of a buffer
It is recommended to create a new buffer using the helper methods inUnpooled
rather than calling an individual implementation's
constructor.
Random Access Indexing
Just like an ordinary primitive byte array,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);
}
Sequential Access Indexing
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 invalid input: '<'= readerIndex invalid input: '<'= writerIndex invalid input: '<'= capacity
Readable bytes (the actual content)
This segment is where the actual data is stored. Any operation whose name starts withread
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());
}
Writable bytes
This segment is a undefined space which needs to be filled. Any operation whose name starts withwrite
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());
}
Discardable bytes
This segment contains the bytes which were read already by a read operation. Initially, the size of this segment is0
, 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 invalid input: '<'= readerIndex invalid input: '<'= writerIndex invalid input: '<'= capacity AFTER discardReadBytes() +------------------+--------------------------------------+ | readable bytes | writable bytes (got more space) | +------------------+--------------------------------------+ | | | readerIndex (0) invalid input: '<'= writerIndex (decreased) invalid input: '<'= capacityPlease 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.
Clearing the buffer indexes
You can set bothreaderIndex
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 ByteBuffer.clear()
.
BEFORE clear() +-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | +-------------------+------------------+------------------+ | | | | 0 invalid input: '<'= readerIndex invalid input: '<'= writerIndex invalid input: '<'= capacity AFTER clear() +---------------------------------------------------------+ | writable bytes (got more space) | +---------------------------------------------------------+ | | 0 = readerIndex = writerIndex invalid input: '<'= capacity
Search operations
For simple single-byte searches, useindexOf(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.
Mark and reset
There are two marker indexes in every buffer. One is for storingreaderIndex
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
.
Derived buffers
You can create a view of an existing buffer by calling one of the following methods: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.
Non-retained and retained derived buffers
Note that theduplicate()
, 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.
Conversion to existing JDK types
Byte array
If aByteBuf
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.
NIO Buffers
If aByteBuf
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()
.
Strings
VarioustoString(Charset)
methods convert a ByteBuf
into a String
. Please note that toString()
is not a
conversion method.
I/O Streams
Please refer toByteBufInputStream
and
ByteBufOutputStream
.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract ByteBufAllocator
alloc()
Returns theByteBufAllocator
which created this buffer.abstract byte[]
array()
Returns the backing byte array of this buffer.abstract int
Returns the offset of the first byte within the backing byte array of this buffer.AByteBuf
can turn into itself.abstract ByteBuf
Returns a read-only version of this buffer.abstract int
bytesBefore
(byte value) Locates the first occurrence of the specifiedvalue
in this buffer.abstract int
bytesBefore
(int length, byte value) Locates the first occurrence of the specifiedvalue
in this buffer.abstract int
bytesBefore
(int index, int length, byte value) Locates the first occurrence of the specifiedvalue
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 thereaderIndex
andwriterIndex
of this buffer to0
.abstract int
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
Discards the bytes between the 0th index andreaderIndex
.abstract ByteBuf
Similar todiscardReadBytes()
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
Returns a buffer which shares the whole region of this buffer.abstract ByteBuf
ensureWritable
(int minWritableBytes) Expands the buffercapacity()
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 buffercapacity()
to make sure the number of writable bytes is equal to or greater than the specified value.abstract boolean
Determines if the content of the specified buffer is identical to the content of this array.abstract int
forEachByte
(int index, int length, ByteProcessor processor) Iterates over the specified area of this buffer with the specifiedprocessor
in ascending order.abstract int
forEachByte
(ByteProcessor processor) Iterates over the readable bytes of this buffer with the specifiedprocessor
in ascending order.abstract int
forEachByteDesc
(int index, int length, ByteProcessor processor) Iterates over the specified area of this buffer with the specifiedprocessor
in descending order.abstract int
forEachByteDesc
(ByteProcessor processor) Iterates over the readable bytes of this buffer with the specifiedprocessor
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 absoluteindex
in this buffer.abstract ByteBuf
getBytes
(int index, byte[] dst) Transfers this buffer's data to the specified destination starting at the specified absoluteindex
.abstract ByteBuf
getBytes
(int index, byte[] dst, int dstIndex, int length) Transfers this buffer's data to the specified destination starting at the specified absoluteindex
.abstract ByteBuf
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
until the destination becomes non-writable.abstract ByteBuf
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
.abstract ByteBuf
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
.abstract ByteBuf
getBytes
(int index, OutputStream out, int length) Transfers this buffer's data to the specified stream starting at the specified absoluteindex
.abstract ByteBuf
getBytes
(int index, ByteBuffer dst) Transfers this buffer's data to the specified destination starting at the specified absoluteindex
until the destination's position reaches its limit.abstract int
getBytes
(int index, FileChannel out, long position, int length) Transfers this buffer's data starting at the specified absoluteindex
to the specified channel starting at the given file position.abstract int
getBytes
(int index, GatheringByteChannel out, int length) Transfers this buffer's data to the specified channel starting at the specified absoluteindex
.abstract char
getChar
(int index) Gets a 2-byte UTF-16 character at the specified absoluteindex
in this buffer.abstract CharSequence
getCharSequence
(int index, int length, Charset charset) Gets aCharSequence
with the given length at the given index.abstract double
getDouble
(int index) Gets a 64-bit floating point number at the specified absoluteindex
in this buffer.double
getDoubleLE
(int index) Gets a 64-bit floating point number at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract float
getFloat
(int index) Gets a 32-bit floating point number at the specified absoluteindex
in this buffer.float
getFloatLE
(int index) Gets a 32-bit floating point number at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract int
getInt
(int index) Gets a 32-bit integer at the specified absoluteindex
in this buffer.abstract int
getIntLE
(int index) Gets a 32-bit integer at the specified absoluteindex
in this buffer with Little Endian Byte Order.abstract long
getLong
(int index) Gets a 64-bit long integer at the specified absoluteindex
in this buffer.abstract long
getLongLE
(int index) Gets a 64-bit long integer at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract int
getMedium
(int index) Gets a 24-bit medium integer at the specified absoluteindex
in this buffer.abstract int
getMediumLE
(int index) Gets a 24-bit medium integer at the specified absoluteindex
in this buffer in the Little Endian Byte Order.abstract short
getShort
(int index) Gets a 16-bit short integer at the specified absoluteindex
in this buffer.abstract short
getShortLE
(int index) Gets a 16-bit short integer at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract short
getUnsignedByte
(int index) Gets an unsigned byte at the specified absoluteindex
in this buffer.abstract long
getUnsignedInt
(int index) Gets an unsigned 32-bit integer at the specified absoluteindex
in this buffer.abstract long
getUnsignedIntLE
(int index) Gets an unsigned 32-bit integer at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract int
getUnsignedMedium
(int index) Gets an unsigned 24-bit medium integer at the specified absoluteindex
in this buffer.abstract int
getUnsignedMediumLE
(int index) Gets an unsigned 24-bit medium integer at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract int
getUnsignedShort
(int index) Gets an unsigned 16-bit short integer at the specified absoluteindex
in this buffer.abstract int
getUnsignedShortLE
(int index) Gets an unsigned 16-bit short integer at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract boolean
hasArray()
Returnstrue
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
Returnstrue
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 specifiedvalue
in this buffer.abstract ByteBuffer
internalNioBuffer
(int index, int length) Internal use only: Exposes the internal NIO buffer.(package private) boolean
Used internally byAbstractByteBuf.ensureAccessible()
to try to guard against using the buffer after it was released (best-effort).boolean
Returnstrue
if thisByteBuf
implementation is backed by a single memory region.abstract boolean
isDirect()
Returnstrue
if and only if this buffer is backed by an NIO direct buffer.abstract boolean
Returnstrue
if and only if(this.writerIndex - this.readerIndex)
is greater than0
.abstract boolean
isReadable
(int size) Returnstrue
if and only if this buffer contains equal to or more than the specified number of elements.abstract boolean
Returnstrue
if and only if this buffer is read-only.abstract boolean
Returnstrue
if and only if(this.capacity - this.writerIndex)
is greater than0
.abstract boolean
isWritable
(int size) Returnstrue
if and only if this buffer has enough room to allow writing the specified number of elements.abstract ByteBuf
Marks the currentreaderIndex
in this buffer.abstract ByteBuf
Marks the currentwriterIndex
in this buffer.abstract int
Returns the maximum allowed capacity of this buffer.int
Returns the maximum number of bytes which can be written for certain without involving an internal reallocation or data-copy.abstract int
Returns the maximum possible number of writable bytes, which is equal to(this.maxCapacity - this.writerIndex)
.abstract long
Returns the low-level memory address that point to the first byte of ths backing data.abstract ByteBuffer
Exposes this buffer's readable bytes as an NIOByteBuffer
.abstract ByteBuffer
nioBuffer
(int index, int length) Exposes this buffer's sub-region as an NIOByteBuffer
.abstract int
Returns the maximum number of NIOByteBuffer
s that consist this buffer.abstract ByteBuffer[]
Exposes this buffer's readable bytes as an NIOByteBuffer
's.abstract ByteBuffer[]
nioBuffers
(int index, int length) Exposes this buffer's bytes as an NIOByteBuffer
'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 ByteOrder
order()
Deprecated.use the Little Endian accessors, e.g.abstract ByteBuf
Deprecated.use the Little Endian accessors, e.g.abstract int
Returns the number of readable bytes which is equal to(this.writerIndex - this.readerIndex)
.abstract boolean
Gets a boolean at the currentreaderIndex
and increases thereaderIndex
by1
in this buffer.abstract byte
readByte()
Gets a byte at the currentreaderIndex
and increases thereaderIndex
by1
in this buffer.abstract ByteBuf
readBytes
(byte[] dst) Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
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 currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
).abstract ByteBuf
readBytes
(int length) Transfers this buffer's data to a newly created buffer starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
).abstract ByteBuf
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
until the destination becomes non-writable, and increases thereaderIndex
by the number of the transferred bytes.abstract ByteBuf
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
).abstract ByteBuf
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
).abstract ByteBuf
readBytes
(OutputStream out, int length) Transfers this buffer's data to the specified stream starting at the currentreaderIndex
.abstract ByteBuf
readBytes
(ByteBuffer dst) Transfers this buffer's data to the specified destination starting at the currentreaderIndex
until the destination's position reaches its limit, and increases thereaderIndex
by the number of the transferred bytes.abstract int
readBytes
(FileChannel out, long position, int length) Transfers this buffer's data starting at the currentreaderIndex
to the specified channel starting at the given file position.abstract int
readBytes
(GatheringByteChannel out, int length) Transfers this buffer's data to the specified stream starting at the currentreaderIndex
.abstract char
readChar()
Gets a 2-byte UTF-16 character at the currentreaderIndex
and increases thereaderIndex
by2
in this buffer.abstract CharSequence
readCharSequence
(int length, Charset charset) Gets aCharSequence
with the given length at the currentreaderIndex
and increases thereaderIndex
by the given length.abstract double
Gets a 64-bit floating point number at the currentreaderIndex
and increases thereaderIndex
by8
in this buffer.double
Gets a 64-bit floating point number at the currentreaderIndex
in Little Endian Byte Order and increases thereaderIndex
by8
in this buffer.abstract int
Returns thereaderIndex
of this buffer.abstract ByteBuf
readerIndex
(int readerIndex) Sets thereaderIndex
of this buffer.abstract float
Gets a 32-bit floating point number at the currentreaderIndex
and increases thereaderIndex
by4
in this buffer.float
Gets a 32-bit floating point number at the currentreaderIndex
in Little Endian Byte Order and increases thereaderIndex
by4
in this buffer.abstract int
readInt()
Gets a 32-bit integer at the currentreaderIndex
and increases thereaderIndex
by4
in this buffer.abstract int
Gets a 32-bit integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by4
in this buffer.abstract long
readLong()
Gets a 64-bit integer at the currentreaderIndex
and increases thereaderIndex
by8
in this buffer.abstract long
Gets a 64-bit integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by8
in this buffer.abstract int
Gets a 24-bit medium integer at the currentreaderIndex
and increases thereaderIndex
by3
in this buffer.abstract int
Gets a 24-bit medium integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by3
in this buffer.abstract ByteBuf
readRetainedSlice
(int length) Returns a new retained slice of this buffer's sub-region starting at the currentreaderIndex
and increases thereaderIndex
by the size of the new slice (=length
).abstract short
Gets a 16-bit short integer at the currentreaderIndex
and increases thereaderIndex
by2
in this buffer.abstract short
Gets a 16-bit short integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by2
in this buffer.abstract ByteBuf
readSlice
(int length) Returns a new slice of this buffer's sub-region starting at the currentreaderIndex
and increases thereaderIndex
by the size of the new slice (=length
).abstract short
Gets an unsigned byte at the currentreaderIndex
and increases thereaderIndex
by1
in this buffer.abstract long
Gets an unsigned 32-bit integer at the currentreaderIndex
and increases thereaderIndex
by4
in this buffer.abstract long
Gets an unsigned 32-bit integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by4
in this buffer.abstract int
Gets an unsigned 24-bit medium integer at the currentreaderIndex
and increases thereaderIndex
by3
in this buffer.abstract int
Gets an unsigned 24-bit medium integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by3
in this buffer.abstract int
Gets an unsigned 16-bit short integer at the currentreaderIndex
and increases thereaderIndex
by2
in this buffer.abstract int
Gets an unsigned 16-bit short integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by2
in this buffer.abstract ByteBuf
Repositions the currentreaderIndex
to the markedreaderIndex
in this buffer.abstract ByteBuf
Repositions the currentwriterIndex
to the markedwriterIndex
in this buffer.abstract ByteBuf
retain()
Increases the reference count by1
.abstract ByteBuf
retain
(int increment) Increases the reference count by the specifiedincrement
.abstract ByteBuf
Returns a retained buffer which shares the whole region of this buffer.abstract ByteBuf
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 absoluteindex
in this buffer.abstract ByteBuf
setByte
(int index, int value) Sets the specified byte at the specified absoluteindex
in this buffer.abstract ByteBuf
setBytes
(int index, byte[] src) Transfers the specified source array's data to this buffer starting at the specified absoluteindex
.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 absoluteindex
.abstract ByteBuf
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
until the source buffer becomes unreadable.abstract ByteBuf
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
.abstract ByteBuf
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
.abstract int
setBytes
(int index, InputStream in, int length) Transfers the content of the specified source stream to this buffer starting at the specified absoluteindex
.abstract ByteBuf
setBytes
(int index, ByteBuffer src) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
until the source buffer's position reaches its limit.abstract int
setBytes
(int index, 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 absoluteindex
.abstract int
setBytes
(int index, ScatteringByteChannel in, int length) Transfers the content of the specified source channel to this buffer starting at the specified absoluteindex
.abstract ByteBuf
setChar
(int index, int value) Sets the specified 2-byte UTF-16 character at the specified absoluteindex
in this buffer.abstract int
setCharSequence
(int index, CharSequence sequence, Charset charset) Writes the specifiedCharSequence
at the givenindex
.abstract ByteBuf
setDouble
(int index, double value) Sets the specified 64-bit floating-point number at the specified absoluteindex
in this buffer.setDoubleLE
(int index, double value) Sets the specified 64-bit floating-point number at the specified absoluteindex
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 absoluteindex
in this buffer.setFloatLE
(int index, float value) Sets the specified 32-bit floating-point number at the specified absoluteindex
in this buffer in Little Endian Byte Order.abstract ByteBuf
setIndex
(int readerIndex, int writerIndex) Sets thereaderIndex
andwriterIndex
of this buffer in one shot.abstract ByteBuf
setInt
(int index, int value) Sets the specified 32-bit integer at the specified absoluteindex
in this buffer.abstract ByteBuf
setIntLE
(int index, int value) Sets the specified 32-bit integer at the specified absoluteindex
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 absoluteindex
in this buffer.abstract ByteBuf
setLongLE
(int index, long value) Sets the specified 64-bit long integer at the specified absoluteindex
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 absoluteindex
in this buffer.abstract ByteBuf
setMediumLE
(int index, int value) Sets the specified 24-bit medium integer at the specified absoluteindex
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 absoluteindex
in this buffer.abstract ByteBuf
setShortLE
(int index, int value) Sets the specified 16-bit short integer at the specified absoluteindex
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 absoluteindex
.abstract ByteBuf
skipBytes
(int length) Increases the currentreaderIndex
by the specifiedlength
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 String
toString()
Returns the string representation of this buffer.abstract String
Decodes this buffer's sub-region into a string with the specified character set.abstract String
Decodes this buffer's readable bytes into a string with the specified character set name.abstract ByteBuf
touch()
Records the current access location of this object for debugging purposes.abstract ByteBuf
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
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 currentwriterIndex
and increases thewriterIndex
by1
in this buffer.abstract ByteBuf
writeByte
(int value) Sets the specified byte at the currentwriterIndex
and increases thewriterIndex
by1
in this buffer.abstract ByteBuf
writeBytes
(byte[] src) Transfers the specified source array's data to this buffer starting at the currentwriterIndex
and increases thewriterIndex
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 currentwriterIndex
and increases thewriterIndex
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 currentwriterIndex
until the source buffer becomes unreadable, and increases thewriterIndex
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 currentwriterIndex
and increases thewriterIndex
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 currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes (=length
).abstract int
writeBytes
(InputStream in, int length) Transfers the content of the specified stream to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes.abstract ByteBuf
writeBytes
(ByteBuffer src) Transfers the specified source buffer's data to this buffer starting at the currentwriterIndex
until the source buffer's position reaches its limit, and increases thewriterIndex
by the number of the transferred bytes.abstract int
writeBytes
(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 currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes.abstract int
writeBytes
(ScatteringByteChannel in, int length) Transfers the content of the specified channel to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes.abstract ByteBuf
writeChar
(int value) Sets the specified 2-byte UTF-16 character at the currentwriterIndex
and increases thewriterIndex
by2
in this buffer.abstract int
writeCharSequence
(CharSequence sequence, Charset charset) Writes the specifiedCharSequence
at the currentwriterIndex
and increases thewriterIndex
by the written bytes.abstract ByteBuf
writeDouble
(double value) Sets the specified 64-bit floating point number at the currentwriterIndex
and increases thewriterIndex
by8
in this buffer.writeDoubleLE
(double value) Sets the specified 64-bit floating point number at the currentwriterIndex
in Little Endian Byte Order and increases thewriterIndex
by8
in this buffer.abstract ByteBuf
writeFloat
(float value) Sets the specified 32-bit floating point number at the currentwriterIndex
and increases thewriterIndex
by4
in this buffer.writeFloatLE
(float value) Sets the specified 32-bit floating point number at the currentwriterIndex
in Little Endian Byte Order and increases thewriterIndex
by4
in this buffer.abstract ByteBuf
writeInt
(int value) Sets the specified 32-bit integer at the currentwriterIndex
and increases thewriterIndex
by4
in this buffer.abstract ByteBuf
writeIntLE
(int value) Sets the specified 32-bit integer at the currentwriterIndex
in the Little Endian Byte Order and increases thewriterIndex
by4
in this buffer.abstract ByteBuf
writeLong
(long value) Sets the specified 64-bit long integer at the currentwriterIndex
and increases thewriterIndex
by8
in this buffer.abstract ByteBuf
writeLongLE
(long value) Sets the specified 64-bit long integer at the currentwriterIndex
in the Little Endian Byte Order and increases thewriterIndex
by8
in this buffer.abstract ByteBuf
writeMedium
(int value) Sets the specified 24-bit medium integer at the currentwriterIndex
and increases thewriterIndex
by3
in this buffer.abstract ByteBuf
writeMediumLE
(int value) Sets the specified 24-bit medium integer at the currentwriterIndex
in the Little Endian Byte Order and increases thewriterIndex
by3
in this buffer.abstract int
Returns thewriterIndex
of this buffer.abstract ByteBuf
writerIndex
(int writerIndex) Sets thewriterIndex
of this buffer.abstract ByteBuf
writeShort
(int value) Sets the specified 16-bit short integer at the currentwriterIndex
and increases thewriterIndex
by2
in this buffer.abstract ByteBuf
writeShortLE
(int value) Sets the specified 16-bit short integer in the Little Endian Byte Order at the currentwriterIndex
and increases thewriterIndex
by2
in this buffer.abstract ByteBuf
writeZero
(int length) Fills this buffer with NUL (0x00) starting at the currentwriterIndex
and increases thewriterIndex
by the specifiedlength
.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.netty.util.ReferenceCounted
refCnt, release, release
-
Constructor Details
-
ByteBuf
public ByteBuf()
-
-
Method Details
-
capacity
public abstract int capacity()Returns the number of bytes (octets) this buffer can contain. -
capacity
Adjusts the capacity of this buffer. If thenewCapacity
is less than the current capacity, the content of this buffer is truncated. If thenewCapacity
is greater than the current capacity, the buffer is appended with unspecified data whose length is(newCapacity - currentCapacity)
.- Throws:
IllegalArgumentException
- if thenewCapacity
is greater thanmaxCapacity()
-
maxCapacity
public abstract int maxCapacity()Returns the maximum allowed capacity of this buffer. This value provides an upper bound oncapacity()
. -
alloc
Returns theByteBufAllocator
which created this buffer. -
order
Deprecated.use the Little Endian accessors, e.g.getShortLE
,getIntLE
instead of creating a buffer with swappedendianness
.Returns the endianness of this buffer. -
order
Deprecated.use the Little Endian accessors, e.g.getShortLE
,getIntLE
instead of creating a buffer with swappedendianness
.Returns a buffer with the specifiedendianness
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 specifiedendianness
is identical to this buffer's byte order, this method can returnthis
. This method does not modifyreaderIndex
orwriterIndex
of this buffer. -
unwrap
Return the underlying buffer instance if this buffer is a wrapper of another buffer.- Returns:
null
if this buffer is not a wrapper
-
isDirect
public abstract boolean isDirect()Returnstrue
if and only if this buffer is backed by an NIO direct buffer. -
isReadOnly
public abstract boolean isReadOnly()Returnstrue
if and only if this buffer is read-only. -
asReadOnly
Returns a read-only version of this buffer. -
readerIndex
public abstract int readerIndex()Returns thereaderIndex
of this buffer. -
readerIndex
Sets thereaderIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedreaderIndex
is less than0
or greater thanthis.writerIndex
-
writerIndex
public abstract int writerIndex()Returns thewriterIndex
of this buffer. -
writerIndex
Sets thewriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedwriterIndex
is less thanthis.readerIndex
or greater thanthis.capacity
-
setIndex
Sets thereaderIndex
andwriterIndex
of this buffer in one shot. This method is useful when you have to worry about the invocation order ofreaderIndex(int)
andwriterIndex(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:ByteBuf
buf =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 anByteBuf
buf =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);
- Throws:
IndexOutOfBoundsException
- if the specifiedreaderIndex
is less than 0, if the specifiedwriterIndex
is less than the specifiedreaderIndex
or if the specifiedwriterIndex
is greater thanthis.capacity
-
readableBytes
public abstract int readableBytes()Returns the number of readable bytes which is equal to(this.writerIndex - this.readerIndex)
. -
writableBytes
public abstract int writableBytes()Returns the number of writable bytes which is equal to(this.capacity - this.writerIndex)
. -
maxWritableBytes
public abstract int maxWritableBytes()Returns the maximum possible number of writable bytes, which is equal to(this.maxCapacity - this.writerIndex)
. -
maxFastWritableBytes
public int maxFastWritableBytes()Returns the maximum number of bytes which can be written for certain without involving an internal reallocation or data-copy. The returned value will be ≥writableBytes()
and ≤maxWritableBytes()
. -
isReadable
public abstract boolean isReadable()Returnstrue
if and only if(this.writerIndex - this.readerIndex)
is greater than0
. -
isReadable
public abstract boolean isReadable(int size) Returnstrue
if and only if this buffer contains equal to or more than the specified number of elements. -
isWritable
public abstract boolean isWritable()Returnstrue
if and only if(this.capacity - this.writerIndex)
is greater than0
. -
isWritable
public abstract boolean isWritable(int size) Returnstrue
if and only if this buffer has enough room to allow writing the specified number of elements. -
clear
Sets thereaderIndex
andwriterIndex
of this buffer to0
. This method is identical tosetIndex(0, 0)
.Please note that the behavior of this method is different from that of NIO buffer, which sets the
limit
to thecapacity
of the buffer. -
markReaderIndex
Marks the currentreaderIndex
in this buffer. You can reposition the currentreaderIndex
to the markedreaderIndex
by callingresetReaderIndex()
. The initial value of the markedreaderIndex
is0
. -
resetReaderIndex
Repositions the currentreaderIndex
to the markedreaderIndex
in this buffer.- Throws:
IndexOutOfBoundsException
- if the currentwriterIndex
is less than the markedreaderIndex
-
markWriterIndex
Marks the currentwriterIndex
in this buffer. You can reposition the currentwriterIndex
to the markedwriterIndex
by callingresetWriterIndex()
. The initial value of the markedwriterIndex
is0
. -
resetWriterIndex
Repositions the currentwriterIndex
to the markedwriterIndex
in this buffer.- Throws:
IndexOutOfBoundsException
- if the currentreaderIndex
is greater than the markedwriterIndex
-
discardReadBytes
Discards the bytes between the 0th index andreaderIndex
. It moves the bytes betweenreaderIndex
andwriterIndex
to the 0th index, and setsreaderIndex
andwriterIndex
to0
andoldWriterIndex - oldReaderIndex
respectively.Please refer to the class documentation for more detailed explanation.
-
discardSomeReadBytes
Similar todiscardReadBytes()
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. -
ensureWritable
Expands the buffercapacity()
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.- Parameters:
minWritableBytes
- the expected minimum number of writable bytes- Throws:
IndexOutOfBoundsException
- ifwriterIndex()
+minWritableBytes
>maxCapacity()
.- See Also:
-
ensureWritable
public abstract int ensureWritable(int minWritableBytes, boolean force) Expands the buffercapacity()
to make sure the number of writable bytes is equal to or greater than the specified value. UnlikeensureWritable(int)
, this method returns a status code.- Parameters:
minWritableBytes
- the expected minimum number of writable bytesforce
- WhenwriterIndex()
+minWritableBytes
>maxCapacity()
:true
- the capacity of the buffer is expanded tomaxCapacity()
false
- the capacity of the buffer is unchanged
- Returns:
0
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.
-
getBoolean
public abstract boolean getBoolean(int index) Gets a boolean at the specified absolute (@code index) in this buffer. This method does not modify thereaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 1
is greater thanthis.capacity
-
getByte
public abstract byte getByte(int index) Gets a byte at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 1
is greater thanthis.capacity
-
getUnsignedByte
public abstract short getUnsignedByte(int index) Gets an unsigned byte at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 1
is greater thanthis.capacity
-
getShort
public abstract short getShort(int index) Gets a 16-bit short integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
getShortLE
public abstract short getShortLE(int index) Gets a 16-bit short integer at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
getUnsignedShort
public abstract int getUnsignedShort(int index) Gets an unsigned 16-bit short integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
getUnsignedShortLE
public abstract int getUnsignedShortLE(int index) Gets an unsigned 16-bit short integer at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
getMedium
public abstract int getMedium(int index) Gets a 24-bit medium integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 3
is greater thanthis.capacity
-
getMediumLE
public abstract int getMediumLE(int index) Gets a 24-bit medium integer at the specified absoluteindex
in this buffer in the Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 3
is greater thanthis.capacity
-
getUnsignedMedium
public abstract int getUnsignedMedium(int index) Gets an unsigned 24-bit medium integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 3
is greater thanthis.capacity
-
getUnsignedMediumLE
public abstract int getUnsignedMediumLE(int index) Gets an unsigned 24-bit medium integer at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 3
is greater thanthis.capacity
-
getInt
public abstract int getInt(int index) Gets a 32-bit integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
getIntLE
public abstract int getIntLE(int index) Gets a 32-bit integer at the specified absoluteindex
in this buffer with Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
getUnsignedInt
public abstract long getUnsignedInt(int index) Gets an unsigned 32-bit integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
getUnsignedIntLE
public abstract long getUnsignedIntLE(int index) Gets an unsigned 32-bit integer at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
getLong
public abstract long getLong(int index) Gets a 64-bit long integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
getLongLE
public abstract long getLongLE(int index) Gets a 64-bit long integer at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
getChar
public abstract char getChar(int index) Gets a 2-byte UTF-16 character at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
getFloat
public abstract float getFloat(int index) Gets a 32-bit floating point number at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
getFloatLE
public float getFloatLE(int index) Gets a 32-bit floating point number at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
getDouble
public abstract double getDouble(int index) Gets a 64-bit floating point number at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
getDoubleLE
public double getDoubleLE(int index) Gets a 64-bit floating point number at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
getBytes
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
until the destination becomes non-writable. This method is basically same withgetBytes(int, ByteBuf, int, int)
, except that this method increases thewriterIndex
of the destination by the number of the transferred bytes whilegetBytes(int, ByteBuf, int, int)
does not. This method does not modifyreaderIndex
orwriterIndex
of the source buffer (i.e.this
).- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + dst.writableBytes
is greater thanthis.capacity
-
getBytes
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
. This method is basically same withgetBytes(int, ByteBuf, int, int)
, except that this method increases thewriterIndex
of the destination by the number of the transferred bytes whilegetBytes(int, ByteBuf, int, int)
does not. This method does not modifyreaderIndex
orwriterIndex
of the source buffer (i.e.this
).- Parameters:
length
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
, ifindex + length
is greater thanthis.capacity
, or iflength
is greater thandst.writableBytes
-
getBytes
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of both the source (i.e.this
) and the destination.- Parameters:
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
, if the specifieddstIndex
is less than0
, ifindex + length
is greater thanthis.capacity
, or ifdstIndex + length
is greater thandst.capacity
-
getBytes
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + dst.length
is greater thanthis.capacity
-
getBytes
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Parameters:
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
, if the specifieddstIndex
is less than0
, ifindex + length
is greater thanthis.capacity
, or ifdstIndex + length
is greater thandst.length
-
getBytes
Transfers this buffer's data to the specified destination starting at the specified absoluteindex
until the destination's position reaches its limit. This method does not modifyreaderIndex
orwriterIndex
of this buffer while the destination'sposition
will be increased.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + dst.remaining()
is greater thanthis.capacity
-
getBytes
Transfers this buffer's data to the specified stream starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Parameters:
length
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
IOException
- if the specified stream threw an exception during I/O
-
getBytes
Transfers this buffer's data to the specified channel starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Parameters:
length
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
IOException
- if the specified channel threw an exception during I/O
-
getBytes
public abstract int getBytes(int index, FileChannel out, long position, int length) throws IOException Transfers this buffer's data starting at the specified absoluteindex
to the specified channel starting at the given file position. This method does not modifyreaderIndex
orwriterIndex
of this buffer. This method does not modify the channel's position.- Parameters:
position
- the file position at which the transfer is to beginlength
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
IOException
- if the specified channel threw an exception during I/O
-
getCharSequence
Gets aCharSequence
with the given length at the given index.- Parameters:
length
- the length to readcharset
- that should be used- Returns:
- the sequence
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
setBoolean
Sets the specified boolean at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 1
is greater thanthis.capacity
-
setByte
Sets the specified byte at the specified absoluteindex
in this buffer. The 24 high-order bits of the specified value are ignored. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 1
is greater thanthis.capacity
-
setShort
Sets the specified 16-bit short integer at the specified absoluteindex
in this buffer. The 16 high-order bits of the specified value are ignored. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
setShortLE
Sets the specified 16-bit short integer at the specified absoluteindex
in this buffer with the Little Endian Byte Order. The 16 high-order bits of the specified value are ignored. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
setMedium
Sets the specified 24-bit medium integer at the specified absoluteindex
in this buffer. Please note that the most significant byte is ignored in the specified value. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 3
is greater thanthis.capacity
-
setMediumLE
Sets the specified 24-bit medium integer at the specified absoluteindex
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 modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 3
is greater thanthis.capacity
-
setInt
Sets the specified 32-bit integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
setIntLE
Sets the specified 32-bit integer at the specified absoluteindex
in this buffer with Little Endian byte order . This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
setLong
Sets the specified 64-bit long integer at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
setLongLE
Sets the specified 64-bit long integer at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
setChar
Sets the specified 2-byte UTF-16 character at the specified absoluteindex
in this buffer. The 16 high-order bits of the specified value are ignored. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 2
is greater thanthis.capacity
-
setFloat
Sets the specified 32-bit floating-point number at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
setFloatLE
Sets the specified 32-bit floating-point number at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 4
is greater thanthis.capacity
-
setDouble
Sets the specified 64-bit floating-point number at the specified absoluteindex
in this buffer. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
setDoubleLE
Sets the specified 64-bit floating-point number at the specified absoluteindex
in this buffer in Little Endian Byte Order. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
orindex + 8
is greater thanthis.capacity
-
setBytes
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
until the source buffer becomes unreadable. This method is basically same withsetBytes(int, ByteBuf, int, int)
, except that this method increases thereaderIndex
of the source buffer by the number of the transferred bytes whilesetBytes(int, ByteBuf, int, int)
does not. This method does not modifyreaderIndex
orwriterIndex
of this buffer (i.e.this
).- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + src.readableBytes
is greater thanthis.capacity
-
setBytes
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
. This method is basically same withsetBytes(int, ByteBuf, int, int)
, except that this method increases thereaderIndex
of the source buffer by the number of the transferred bytes whilesetBytes(int, ByteBuf, int, int)
does not. This method does not modifyreaderIndex
orwriterIndex
of this buffer (i.e.this
).- Parameters:
length
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
, ifindex + length
is greater thanthis.capacity
, or iflength
is greater thansrc.readableBytes
-
setBytes
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of both the source (i.e.this
) and the destination.- Parameters:
srcIndex
- the first index of the sourcelength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
, if the specifiedsrcIndex
is less than0
, ifindex + length
is greater thanthis.capacity
, or ifsrcIndex + length
is greater thansrc.capacity
-
setBytes
Transfers the specified source array's data to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + src.length
is greater thanthis.capacity
-
setBytes
Transfers the specified source array's data to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
, if the specifiedsrcIndex
is less than0
, ifindex + length
is greater thanthis.capacity
, or ifsrcIndex + length
is greater thansrc.length
-
setBytes
Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex
until the source buffer's position reaches its limit. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + src.remaining()
is greater thanthis.capacity
-
setBytes
Transfers the content of the specified source stream to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Parameters:
length
- the number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1
if the specifiedInputStream
reached EOF. - Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
IOException
- if the specified stream threw an exception during I/O
-
setBytes
Transfers the content of the specified source channel to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Parameters:
length
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1
if the specified channel is closed or it reached EOF. - Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
IOException
- if the specified channel threw an exception during I/O
-
setBytes
public abstract int setBytes(int index, FileChannel in, long position, int length) throws IOException Transfers the content of the specified source channel starting at the given file position to this buffer starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer. This method does not modify the channel's position.- Parameters:
position
- the file position at which the transfer is to beginlength
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1
if the specified channel is closed or it reached EOF. - Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
IOException
- if the specified channel threw an exception during I/O
-
setZero
Fills this buffer with NUL (0x00) starting at the specified absoluteindex
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Parameters:
length
- the number of NULs to write to the buffer- Throws:
IndexOutOfBoundsException
- if the specifiedindex
is less than0
or ifindex + length
is greater thanthis.capacity
-
setCharSequence
Writes the specifiedCharSequence
at the givenindex
. ThewriterIndex
is not modified by this method.- Parameters:
index
- on which the sequence should be writtensequence
- to writecharset
- that should be used.- Returns:
- the written number of bytes.
- Throws:
IndexOutOfBoundsException
- if the sequence at the given index would be out of bounds of the buffer capacity
-
readBoolean
public abstract boolean readBoolean()Gets a boolean at the currentreaderIndex
and increases thereaderIndex
by1
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than1
-
readByte
public abstract byte readByte()Gets a byte at the currentreaderIndex
and increases thereaderIndex
by1
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than1
-
readUnsignedByte
public abstract short readUnsignedByte()Gets an unsigned byte at the currentreaderIndex
and increases thereaderIndex
by1
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than1
-
readShort
public abstract short readShort()Gets a 16-bit short integer at the currentreaderIndex
and increases thereaderIndex
by2
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than2
-
readShortLE
public abstract short readShortLE()Gets a 16-bit short integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by2
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than2
-
readUnsignedShort
public abstract int readUnsignedShort()Gets an unsigned 16-bit short integer at the currentreaderIndex
and increases thereaderIndex
by2
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than2
-
readUnsignedShortLE
public abstract int readUnsignedShortLE()Gets an unsigned 16-bit short integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by2
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than2
-
readMedium
public abstract int readMedium()Gets a 24-bit medium integer at the currentreaderIndex
and increases thereaderIndex
by3
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than3
-
readMediumLE
public abstract int readMediumLE()Gets a 24-bit medium integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by3
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than3
-
readUnsignedMedium
public abstract int readUnsignedMedium()Gets an unsigned 24-bit medium integer at the currentreaderIndex
and increases thereaderIndex
by3
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than3
-
readUnsignedMediumLE
public abstract int readUnsignedMediumLE()Gets an unsigned 24-bit medium integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by3
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than3
-
readInt
public abstract int readInt()Gets a 32-bit integer at the currentreaderIndex
and increases thereaderIndex
by4
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than4
-
readIntLE
public abstract int readIntLE()Gets a 32-bit integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by4
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than4
-
readUnsignedInt
public abstract long readUnsignedInt()Gets an unsigned 32-bit integer at the currentreaderIndex
and increases thereaderIndex
by4
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than4
-
readUnsignedIntLE
public abstract long readUnsignedIntLE()Gets an unsigned 32-bit integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by4
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than4
-
readLong
public abstract long readLong()Gets a 64-bit integer at the currentreaderIndex
and increases thereaderIndex
by8
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than8
-
readLongLE
public abstract long readLongLE()Gets a 64-bit integer at the currentreaderIndex
in the Little Endian Byte Order and increases thereaderIndex
by8
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than8
-
readChar
public abstract char readChar()Gets a 2-byte UTF-16 character at the currentreaderIndex
and increases thereaderIndex
by2
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than2
-
readFloat
public abstract float readFloat()Gets a 32-bit floating point number at the currentreaderIndex
and increases thereaderIndex
by4
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than4
-
readFloatLE
public float readFloatLE()Gets a 32-bit floating point number at the currentreaderIndex
in Little Endian Byte Order and increases thereaderIndex
by4
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than4
-
readDouble
public abstract double readDouble()Gets a 64-bit floating point number at the currentreaderIndex
and increases thereaderIndex
by8
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than8
-
readDoubleLE
public double readDoubleLE()Gets a 64-bit floating point number at the currentreaderIndex
in Little Endian Byte Order and increases thereaderIndex
by8
in this buffer.- Throws:
IndexOutOfBoundsException
- ifthis.readableBytes
is less than8
-
readBytes
Transfers this buffer's data to a newly created buffer starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
). The returned buffer'sreaderIndex
andwriterIndex
are0
andlength
respectively.- Parameters:
length
- the number of bytes to transfer- Returns:
- the newly created buffer which contains the transferred bytes
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
readSlice
Returns a new slice of this buffer's sub-region starting at the currentreaderIndex
and increases thereaderIndex
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.- Parameters:
length
- the size of the new slice- Returns:
- the newly created slice
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
readRetainedSlice
Returns a new retained slice of this buffer's sub-region starting at the currentreaderIndex
and increases thereaderIndex
by the size of the new slice (=length
).Note that this method returns a retained buffer unlike
readSlice(int)
. This method behaves similarly toreadSlice(...).retain()
except that this method may return a buffer implementation that produces less garbage.- Parameters:
length
- the size of the new slice- Returns:
- the newly created slice
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
readBytes
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
until the destination becomes non-writable, and increases thereaderIndex
by the number of the transferred bytes. This method is basically same withreadBytes(ByteBuf, int, int)
, except that this method increases thewriterIndex
of the destination by the number of the transferred bytes whilereadBytes(ByteBuf, int, int)
does not.- Throws:
IndexOutOfBoundsException
- ifdst.writableBytes
is greater thanthis.readableBytes
-
readBytes
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
). This method is basically same withreadBytes(ByteBuf, int, int)
, except that this method increases thewriterIndex
of the destination by the number of the transferred bytes (=length
) whilereadBytes(ByteBuf, int, int)
does not.- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
or iflength
is greater thandst.writableBytes
-
readBytes
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
).- Parameters:
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifieddstIndex
is less than0
, iflength
is greater thanthis.readableBytes
, or ifdstIndex + length
is greater thandst.capacity
-
readBytes
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=dst.length
).- Throws:
IndexOutOfBoundsException
- ifdst.length
is greater thanthis.readableBytes
-
readBytes
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
and increases thereaderIndex
by the number of the transferred bytes (=length
).- Parameters:
dstIndex
- the first index of the destinationlength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifieddstIndex
is less than0
, iflength
is greater thanthis.readableBytes
, or ifdstIndex + length
is greater thandst.length
-
readBytes
Transfers this buffer's data to the specified destination starting at the currentreaderIndex
until the destination's position reaches its limit, and increases thereaderIndex
by the number of the transferred bytes.- Throws:
IndexOutOfBoundsException
- ifdst.remaining()
is greater thanthis.readableBytes
-
readBytes
Transfers this buffer's data to the specified stream starting at the currentreaderIndex
.- Parameters:
length
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
IOException
- if the specified stream threw an exception during I/O
-
readBytes
Transfers this buffer's data to the specified stream starting at the currentreaderIndex
.- Parameters:
length
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
IOException
- if the specified channel threw an exception during I/O
-
readCharSequence
Gets aCharSequence
with the given length at the currentreaderIndex
and increases thereaderIndex
by the given length.- Parameters:
length
- the length to readcharset
- that should be used- Returns:
- the sequence
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
readBytes
Transfers this buffer's data starting at the currentreaderIndex
to the specified channel starting at the given file position. This method does not modify the channel's position.- Parameters:
position
- the file position at which the transfer is to beginlength
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
IOException
- if the specified channel threw an exception during I/O
-
skipBytes
Increases the currentreaderIndex
by the specifiedlength
in this buffer.- Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
writeBoolean
Sets the specified boolean at the currentwriterIndex
and increases thewriterIndex
by1
in this buffer. Ifthis.writableBytes
is less than1
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeByte
Sets the specified byte at the currentwriterIndex
and increases thewriterIndex
by1
in this buffer. The 24 high-order bits of the specified value are ignored. Ifthis.writableBytes
is less than1
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeShort
Sets the specified 16-bit short integer at the currentwriterIndex
and increases thewriterIndex
by2
in this buffer. The 16 high-order bits of the specified value are ignored. Ifthis.writableBytes
is less than2
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeShortLE
Sets the specified 16-bit short integer in the Little Endian Byte Order at the currentwriterIndex
and increases thewriterIndex
by2
in this buffer. The 16 high-order bits of the specified value are ignored. Ifthis.writableBytes
is less than2
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeMedium
Sets the specified 24-bit medium integer at the currentwriterIndex
and increases thewriterIndex
by3
in this buffer. Ifthis.writableBytes
is less than3
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeMediumLE
Sets the specified 24-bit medium integer at the currentwriterIndex
in the Little Endian Byte Order and increases thewriterIndex
by3
in this buffer. Ifthis.writableBytes
is less than3
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeInt
Sets the specified 32-bit integer at the currentwriterIndex
and increases thewriterIndex
by4
in this buffer. Ifthis.writableBytes
is less than4
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeIntLE
Sets the specified 32-bit integer at the currentwriterIndex
in the Little Endian Byte Order and increases thewriterIndex
by4
in this buffer. Ifthis.writableBytes
is less than4
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeLong
Sets the specified 64-bit long integer at the currentwriterIndex
and increases thewriterIndex
by8
in this buffer. Ifthis.writableBytes
is less than8
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeLongLE
Sets the specified 64-bit long integer at the currentwriterIndex
in the Little Endian Byte Order and increases thewriterIndex
by8
in this buffer. Ifthis.writableBytes
is less than8
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeChar
Sets the specified 2-byte UTF-16 character at the currentwriterIndex
and increases thewriterIndex
by2
in this buffer. The 16 high-order bits of the specified value are ignored. Ifthis.writableBytes
is less than2
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeFloat
Sets the specified 32-bit floating point number at the currentwriterIndex
and increases thewriterIndex
by4
in this buffer. Ifthis.writableBytes
is less than4
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeFloatLE
Sets the specified 32-bit floating point number at the currentwriterIndex
in Little Endian Byte Order and increases thewriterIndex
by4
in this buffer. Ifthis.writableBytes
is less than4
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeDouble
Sets the specified 64-bit floating point number at the currentwriterIndex
and increases thewriterIndex
by8
in this buffer. Ifthis.writableBytes
is less than8
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeDoubleLE
Sets the specified 64-bit floating point number at the currentwriterIndex
in Little Endian Byte Order and increases thewriterIndex
by8
in this buffer. Ifthis.writableBytes
is less than8
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeBytes
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndex
until the source buffer becomes unreadable, and increases thewriterIndex
by the number of the transferred bytes. This method is basically same withwriteBytes(ByteBuf, int, int)
, except that this method increases thereaderIndex
of the source buffer by the number of the transferred bytes whilewriteBytes(ByteBuf, int, int)
does not. Ifthis.writableBytes
is less thansrc.readableBytes
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeBytes
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes (=length
). This method is basically same withwriteBytes(ByteBuf, int, int)
, except that this method increases thereaderIndex
of the source buffer by the number of the transferred bytes (=length
) whilewriteBytes(ByteBuf, int, int)
does not. Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
length
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- iflength
is greater thensrc.readableBytes
-
writeBytes
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes (=length
). Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
srcIndex
- the first index of the sourcelength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedsrcIndex
is less than0
, or ifsrcIndex + length
is greater thansrc.capacity
-
writeBytes
Transfers the specified source array's data to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes (=src.length
). Ifthis.writableBytes
is less thansrc.length
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeBytes
Transfers the specified source array's data to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes (=length
). Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
srcIndex
- the first index of the sourcelength
- the number of bytes to transfer- Throws:
IndexOutOfBoundsException
- if the specifiedsrcIndex
is less than0
, or ifsrcIndex + length
is greater thansrc.length
-
writeBytes
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndex
until the source buffer's position reaches its limit, and increases thewriterIndex
by the number of the transferred bytes. Ifthis.writableBytes
is less thansrc.remaining()
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate. -
writeBytes
Transfers the content of the specified stream to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes. Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
length
- the number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1
if the specifiedInputStream
reached EOF. - Throws:
IOException
- if the specified stream threw an exception during I/O
-
writeBytes
Transfers the content of the specified channel to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes. Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
length
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1
if the specified channel is closed or it reached EOF. - Throws:
IOException
- if the specified channel threw an exception during I/O
-
writeBytes
Transfers the content of the specified channel starting at the given file position to this buffer starting at the currentwriterIndex
and increases thewriterIndex
by the number of the transferred bytes. This method does not modify the channel's position. Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
position
- the file position at which the transfer is to beginlength
- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1
if the specified channel is closed or it reached EOF. - Throws:
IOException
- if the specified channel threw an exception during I/O
-
writeZero
Fills this buffer with NUL (0x00) starting at the currentwriterIndex
and increases thewriterIndex
by the specifiedlength
. Ifthis.writableBytes
is less thanlength
,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
length
- the number of NULs to write to the buffer
-
writeCharSequence
Writes the specifiedCharSequence
at the currentwriterIndex
and increases thewriterIndex
by the written bytes. in this buffer. Ifthis.writableBytes
is not large enough to write the whole sequence,ensureWritable(int)
will be called in an attempt to expand capacity to accommodate.- Parameters:
sequence
- to writecharset
- that should be used- Returns:
- the written number of bytes
-
indexOf
public abstract int indexOf(int fromIndex, int toIndex, byte value) Locates the first occurrence of the specifiedvalue
in this buffer. The search takes place from the specifiedfromIndex
(inclusive) to the specifiedtoIndex
(exclusive).If
fromIndex
is greater thantoIndex
, the search is performed in a reversed order fromfromIndex
(exclusive) down totoIndex
(inclusive).Note that the lower index is always included and higher always excluded.
This method does not modify
readerIndex
orwriterIndex
of this buffer.- Returns:
- the absolute index of the first occurrence if found.
-1
otherwise.
-
bytesBefore
public abstract int bytesBefore(byte value) Locates the first occurrence of the specifiedvalue
in this buffer. The search takes place from the currentreaderIndex
(inclusive) to the currentwriterIndex
(exclusive).This method does not modify
readerIndex
orwriterIndex
of this buffer.- Returns:
- the number of bytes between the current
readerIndex
and the first occurrence if found.-1
otherwise.
-
bytesBefore
public abstract int bytesBefore(int length, byte value) Locates the first occurrence of the specifiedvalue
in this buffer. The search starts from the currentreaderIndex
(inclusive) and lasts for the specifiedlength
.This method does not modify
readerIndex
orwriterIndex
of this buffer.- Returns:
- the number of bytes between the current
readerIndex
and the first occurrence if found.-1
otherwise. - Throws:
IndexOutOfBoundsException
- iflength
is greater thanthis.readableBytes
-
bytesBefore
public abstract int bytesBefore(int index, int length, byte value) Locates the first occurrence of the specifiedvalue
in this buffer. The search starts from the specifiedindex
(inclusive) and lasts for the specifiedlength
.This method does not modify
readerIndex
orwriterIndex
of this buffer.- Returns:
- the number of bytes between the specified
index
and the first occurrence if found.-1
otherwise. - Throws:
IndexOutOfBoundsException
- ifindex + length
is greater thanthis.capacity
-
forEachByte
Iterates over the readable bytes of this buffer with the specifiedprocessor
in ascending order.- Returns:
-1
if the processor iterated to or beyond the end of the readable bytes. The last-visited index If theByteProcessor.process(byte)
returnedfalse
.
-
forEachByte
Iterates over the specified area of this buffer with the specifiedprocessor
in ascending order. (i.e.index
,(index + 1)
, ..(index + length - 1)
)- Returns:
-1
if the processor iterated to or beyond the end of the specified area. The last-visited index If theByteProcessor.process(byte)
returnedfalse
.
-
forEachByteDesc
Iterates over the readable bytes of this buffer with the specifiedprocessor
in descending order.- Returns:
-1
if the processor iterated to or beyond the beginning of the readable bytes. The last-visited index If theByteProcessor.process(byte)
returnedfalse
.
-
forEachByteDesc
Iterates over the specified area of this buffer with the specifiedprocessor
in descending order. (i.e.(index + length - 1)
,(index + length - 2)
, ...index
)- Returns:
-1
if the processor iterated to or beyond the beginning of the specified area. The last-visited index If theByteProcessor.process(byte)
returnedfalse
.
-
copy
Returns a copy of this buffer's readable bytes. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method is identical tobuf.copy(buf.readerIndex(), buf.readableBytes())
. This method does not modifyreaderIndex
orwriterIndex
of this buffer. -
copy
Returns a copy of this buffer's sub-region. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method does not modifyreaderIndex
orwriterIndex
of this buffer. -
slice
Returns a slice of this buffer's readable bytes. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical tobuf.slice(buf.readerIndex(), buf.readableBytes())
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.Also be aware that this method will NOT call
retain()
and so the reference count will NOT be increased. -
retainedSlice
Returns a retained slice of this buffer's readable bytes. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical tobuf.slice(buf.readerIndex(), buf.readableBytes())
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.Note that this method returns a retained buffer unlike
slice()
. This method behaves similarly toslice().retain()
except that this method may return a buffer implementation that produces less garbage. -
slice
Returns a slice of this buffer's sub-region. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method does not modifyreaderIndex
orwriterIndex
of this buffer.Also be aware that this method will NOT call
retain()
and so the reference count will NOT be increased. -
retainedSlice
Returns a retained slice of this buffer's sub-region. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method does not modifyreaderIndex
orwriterIndex
of this buffer.Note that this method returns a retained buffer unlike
slice(int, int)
. This method behaves similarly toslice(...).retain()
except that this method may return a buffer implementation that produces less garbage. -
duplicate
Returns a buffer which shares the whole region of this buffer. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method does not modifyreaderIndex
orwriterIndex
of this buffer.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.- Returns:
- A buffer whose readable content is equivalent to the buffer returned by
slice()
. However this buffer will share the capacity of the underlying buffer, and therefore allows access to all of the underlying content if necessary.
-
retainedDuplicate
Returns a retained buffer which shares the whole region of this buffer. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical tobuf.slice(0, buf.capacity())
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.Note that this method returns a retained buffer unlike
slice(int, int)
. This method behaves similarly toduplicate().retain()
except that this method may return a buffer implementation that produces less garbage. -
nioBufferCount
public abstract int nioBufferCount()Returns the maximum number of NIOByteBuffer
s that consist this buffer. Note thatnioBuffers()
ornioBuffers(int, int)
might return a less number ofByteBuffer
s.- Returns:
-1
if this buffer has no underlyingByteBuffer
. the number of the underlyingByteBuffer
s if this buffer has at least one underlyingByteBuffer
. Note that this method does not return0
to avoid confusion.- See Also:
-
nioBuffer
Exposes this buffer's readable bytes as an NIOByteBuffer
. 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 tobuf.nioBuffer(buf.readerIndex(), buf.readableBytes())
. This method does not modifyreaderIndex
orwriterIndex
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.- Throws:
UnsupportedOperationException
- if this buffer cannot create aByteBuffer
that shares the content with itself- See Also:
-
nioBuffer
Exposes this buffer's sub-region as an NIOByteBuffer
. 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 modifyreaderIndex
orwriterIndex
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.- Throws:
UnsupportedOperationException
- if this buffer cannot create aByteBuffer
that shares the content with itself- See Also:
-
internalNioBuffer
Internal use only: Exposes the internal NIO buffer. -
nioBuffers
Exposes this buffer's readable bytes as an NIOByteBuffer
'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 modifyreaderIndex
orwriterIndex
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.- Throws:
UnsupportedOperationException
- if this buffer cannot create aByteBuffer
that shares the content with itself- See Also:
-
nioBuffers
Exposes this buffer's bytes as an NIOByteBuffer
'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 modifyreaderIndex
orwriterIndex
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.- Throws:
UnsupportedOperationException
- if this buffer cannot create aByteBuffer
that shares the content with itself- See Also:
-
hasArray
public abstract boolean hasArray()Returnstrue
if and only if this buffer has a backing byte array. If this method returns true, you can safely callarray()
andarrayOffset()
. -
array
public abstract byte[] array()Returns the backing byte array of this buffer.- Throws:
UnsupportedOperationException
- if there no accessible backing byte array
-
arrayOffset
public abstract int arrayOffset()Returns the offset of the first byte within the backing byte array of this buffer.- Throws:
UnsupportedOperationException
- if there no accessible backing byte array
-
hasMemoryAddress
public abstract boolean hasMemoryAddress()Returnstrue
if and only if this buffer has a reference to the low-level memory address that points to the backing data. -
memoryAddress
public abstract long memoryAddress()Returns the low-level memory address that point to the first byte of ths backing data.- Throws:
UnsupportedOperationException
- if this buffer does not support accessing the low-level memory address
-
isContiguous
public boolean isContiguous()Returnstrue
if thisByteBuf
implementation is backed by a single memory region. Composite buffer implementations must return false even if they currently hold ≤ 1 components. For buffers that returntrue
, it's guaranteed that a successful call todiscardReadBytes()
will increase the value ofmaxFastWritableBytes()
by the currentreaderIndex
.This method will return
false
by default, and afalse
return value does not necessarily mean that the implementation is composite or that it is not backed by a single memory region. -
asByteBuf
AByteBuf
can turn into itself.- Specified by:
asByteBuf
in interfaceByteBufConvertible
- Returns:
- This
ByteBuf
instance.
-
toString
Decodes this buffer's readable bytes into a string with the specified character set name. This method is identical tobuf.toString(buf.readerIndex(), buf.readableBytes(), charsetName)
. This method does not modifyreaderIndex
orwriterIndex
of this buffer.- Throws:
UnsupportedCharsetException
- if the specified character set name is not supported by the current VM
-
toString
Decodes this buffer's sub-region into a string with the specified character set. This method does not modifyreaderIndex
orwriterIndex
of this buffer. -
hashCode
public abstract int hashCode()Returns a hash code which was calculated from the content of this buffer. If there's a byte array which is equal to this array, both arrays should return the same value. -
equals
Determines if the content of the specified buffer is identical to the content of this array. 'Identical' here means:- the size of the contents of the two buffers are same and
- every single byte of the content of the two buffers are same.
readerIndex()
norwriterIndex()
. This method also returnsfalse
fornull
and an object which is not an instance ofByteBuf
type. -
compareTo
Compares the content of the specified buffer to the content of this buffer. Comparison is performed in the same manner with the string comparison functions of various languages such asstrcmp
,memcmp
andString.compareTo(String)
.- Specified by:
compareTo
in interfaceComparable<ByteBuf>
-
toString
Returns the string representation of this buffer. This method does not necessarily return the whole content of the buffer but returns the values of the key properties such asreaderIndex()
,writerIndex()
andcapacity()
. -
retain
Description copied from interface:ReferenceCounted
Increases the reference count by the specifiedincrement
.- Specified by:
retain
in interfaceReferenceCounted
-
retain
Description copied from interface:ReferenceCounted
Increases the reference count by1
.- Specified by:
retain
in interfaceReferenceCounted
-
touch
Description copied from interface:ReferenceCounted
Records the current access location of this object for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you viaResourceLeakDetector
. This method is a shortcut totouch(null)
.- Specified by:
touch
in interfaceReferenceCounted
-
touch
Description copied from interface:ReferenceCounted
Records the current access location of this object with an additional arbitrary information for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you viaResourceLeakDetector
.- Specified by:
touch
in interfaceReferenceCounted
-
isAccessible
boolean isAccessible()Used internally byAbstractByteBuf.ensureAccessible()
to try to guard against using the buffer after it was released (best-effort).
-