Interface ChannelBuffer
-
- All Superinterfaces:
java.lang.Comparable<ChannelBuffer>
- All Known Subinterfaces:
WrappedChannelBuffer
- All Known Implementing Classes:
AbstractChannelBuffer,BigEndianHeapChannelBuffer,ByteBufferBackedChannelBuffer,CompositeChannelBuffer,DuplicatedChannelBuffer,DynamicChannelBuffer,EmptyChannelBuffer,HeapChannelBuffer,LittleEndianHeapChannelBuffer,ReadOnlyChannelBuffer,ReplayingDecoderBuffer,SlicedChannelBuffer,TruncatedChannelBuffer
public interface ChannelBuffer extends java.lang.Comparable<ChannelBuffer>
A random and sequential accessible sequence of zero or more bytes (octets). This interface provides an abstract view for one or more primitive byte arrays (byte[]) and NIO buffers.Creation of a buffer
It is recommended to create a new buffer using the helper methods inChannelBuffersrather than calling an individual implementation's constructor.Random Access Indexing
Just like an ordinary primitive byte array,ChannelBufferuses zero-based indexing. It means the index of the first byte is always0and the index of the last byte is alwayscapacity - 1. For example, to iterate all bytes of a buffer, you can do the following, regardless of its internal implementation:ChannelBufferbuffer = ...; for (int i = 0; i < buffer.capacity(); i ++) { byte b = buffer.getByte(i); System.out.println((char) b); }Sequential Access Indexing
ChannelBufferprovides two pointer variables to support sequential read and write operations -readerIndexfor a read operation andwriterIndexfor a write operation respectively. The following diagram shows how a buffer is segmented into three areas by the two pointers:+-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | | | (CONTENT) | | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacityReadable bytes (the actual content)
This segment is where the actual data is stored. Any operation whose name starts withreadorskipwill get or skip the data at the currentreaderIndexand increase it by the number of read bytes. If the argument of the read operation is also aChannelBufferand no destination index is specified, the specified buffer'sreaderIndexis increased together.If there's not enough content left,
IndexOutOfBoundsExceptionis raised. The default value of newly allocated, wrapped or copied buffer'sreaderIndexis0.// Iterates the readable bytes of a buffer.
ChannelBufferbuffer = ...; while (buffer.readable()) { System.out.println(buffer.readByte()); }Writable bytes
This segment is a undefined space which needs to be filled. Any operation whose name ends withwritewill write the data at the currentwriterIndexand increase it by the number of written bytes. If the argument of the write operation is also aChannelBuffer, and no source index is specified, the specified buffer'sreaderIndexis increased together.If there's not enough writable bytes left,
IndexOutOfBoundsExceptionis raised. The default value of newly allocated buffer'swriterIndexis0. The default value of wrapped or copied buffer'swriterIndexis thecapacityof the buffer.// Fills the writable bytes of a buffer with random integers.
ChannelBufferbuffer = ...; while (buffer.writableBytes() >= 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 thewriterIndexas read operations are executed. The read bytes can be discarded by callingdiscardReadBytes()to reclaim unused area as depicted by the following diagram:BEFORE discardReadBytes() +-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacity AFTER discardReadBytes() +------------------+--------------------------------------+ | readable bytes | writable bytes (got more space) | +------------------+--------------------------------------+ | | | readerIndex (0) <= writerIndex (decreased) <= capacityPlease note that there is no guarantee about the content of writable bytes after callingdiscardReadBytes(). 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 bothreaderIndexandwriterIndexto0by callingclear(). It does not clear the buffer content (e.g. filling with0) but just clears the two pointers. Please also note that the semantic of this operation is different fromBuffer.clear().BEFORE clear() +-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacity AFTER clear() +---------------------------------------------------------+ | writable bytes (got more space) | +---------------------------------------------------------+ | | 0 = readerIndex = writerIndex <= capacitySearch operations
VariousindexOf(int, int, byte)methods help you locate an index of a value which meets a certain criteria. Complicated dynamic sequential search can be done withChannelBufferIndexFinderas well as simple static single byte search.If you are decoding variable length data such as NUL-terminated string, you will find
bytesBefore(byte)also useful.Mark and reset
There are two marker indexes in every buffer. One is for storingreaderIndexand the other is for storingwriterIndex. 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 inInputStreamexcept that there's noreadlimit.Derived buffers
You can create a view of an existing buffer by calling eitherduplicate(),slice()orslice(int, int). A derived buffer will have an independentreaderIndex,writerIndexand 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.Conversion to existing JDK types
Byte array
If aChannelBufferis backed by a byte array (i.e.byte[]), you can access it directly via thearray()method. To determine if a buffer is backed by a byte array,hasArray()should be used.NIO Buffers
VarioustoByteBuffer()andtoByteBuffers()methods convert aChannelBufferinto one or more NIO buffers. These methods avoid buffer allocation and memory copy whenever possible, but there's no guarantee that memory copy will not be involved.Strings
Various#toString(String)methods convert aChannelBufferinto aString. Please note thattoString()is not a conversion method.I/O Streams
Please refer toChannelBufferInputStreamandChannelBufferOutputStream.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description byte[]array()Returns the backing byte array of this buffer.intarrayOffset()Returns the offset of the first byte within the backing byte array of this buffer.intbytesBefore(byte value)Locates the first occurrence of the specifiedvaluein this buffer.intbytesBefore(int length, byte value)Locates the first occurrence of the specifiedvaluein this buffer.intbytesBefore(int index, int length, byte value)Locates the first occurrence of the specifiedvaluein this buffer.intbytesBefore(int index, int length, ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue.intbytesBefore(int length, ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue.intbytesBefore(ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue.intcapacity()Returns the number of bytes (octets) this buffer can contain.voidclear()Sets thereaderIndexandwriterIndexof this buffer to0.intcompareTo(ChannelBuffer buffer)Compares the content of the specified buffer to the content of this buffer.ChannelBuffercopy()Returns a copy of this buffer's readable bytes.ChannelBuffercopy(int index, int length)Returns a copy of this buffer's sub-region.voiddiscardReadBytes()Discards the bytes between the 0th index andreaderIndex.ChannelBufferduplicate()Returns a buffer which shares the whole region of this buffer.voidensureWritableBytes(int writableBytes)Makes sure the number of the writable bytes is equal to or greater than the specified value.booleanequals(java.lang.Object obj)Determines if the content of the specified buffer is identical to the content of this array.ChannelBufferFactoryfactory()Returns the factory which creates aChannelBufferwhose type and defaultByteOrderare same with this buffer.bytegetByte(int index)Gets a byte at the specified absoluteindexin this buffer.voidgetBytes(int index, byte[] dst)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.voidgetBytes(int index, byte[] dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.voidgetBytes(int index, java.io.OutputStream out, int length)Transfers this buffer's data to the specified stream starting at the specified absoluteindex.voidgetBytes(int index, java.nio.ByteBuffer dst)Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination's position reaches its limit.intgetBytes(int index, java.nio.channels.GatheringByteChannel out, int length)Transfers this buffer's data to the specified channel starting at the specified absoluteindex.voidgetBytes(int index, ChannelBuffer dst)Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination becomes non-writable.voidgetBytes(int index, ChannelBuffer dst, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.voidgetBytes(int index, ChannelBuffer dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.chargetChar(int index)Gets a 2-byte UTF-16 character at the specified absoluteindexin this buffer.doublegetDouble(int index)Gets a 64-bit floating point number at the specified absoluteindexin this buffer.floatgetFloat(int index)Gets a 32-bit floating point number at the specified absoluteindexin this buffer.intgetInt(int index)Gets a 32-bit integer at the specified absoluteindexin this buffer.longgetLong(int index)Gets a 64-bit long integer at the specified absoluteindexin this buffer.intgetMedium(int index)Gets a 24-bit medium integer at the specified absoluteindexin this buffer.shortgetShort(int index)Gets a 16-bit short integer at the specified absoluteindexin this buffer.shortgetUnsignedByte(int index)Gets an unsigned byte at the specified absoluteindexin this buffer.longgetUnsignedInt(int index)Gets an unsigned 32-bit integer at the specified absoluteindexin this buffer.intgetUnsignedMedium(int index)Gets an unsigned 24-bit medium integer at the specified absoluteindexin this buffer.intgetUnsignedShort(int index)Gets an unsigned 16-bit short integer at the specified absoluteindexin this buffer.booleanhasArray()Returnstrueif and only if this buffer has a backing byte array.inthashCode()Returns a hash code which was calculated from the content of this buffer.intindexOf(int fromIndex, int toIndex, byte value)Locates the first occurrence of the specifiedvaluein this buffer.intindexOf(int fromIndex, int toIndex, ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue.booleanisDirect()Returnstrueif and only if this buffer is backed by an NIO direct buffer.voidmarkReaderIndex()Marks the currentreaderIndexin this buffer.voidmarkWriterIndex()Marks the currentwriterIndexin this buffer.java.nio.ByteOrderorder()Returns the endianness of this buffer.booleanreadable()Returnstrueif and only if(this.writerIndex - this.readerIndex)is greater than0.intreadableBytes()Returns the number of readable bytes which is equal to(this.writerIndex - this.readerIndex).bytereadByte()Gets a byte at the currentreaderIndexand increases thereaderIndexby1in this buffer.voidreadBytes(byte[] dst)Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=dst.length).voidreadBytes(byte[] dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length).ChannelBufferreadBytes(int length)Transfers this buffer's data to a newly created buffer starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length).voidreadBytes(java.io.OutputStream out, int length)Transfers this buffer's data to the specified stream starting at the currentreaderIndex.voidreadBytes(java.nio.ByteBuffer dst)Transfers this buffer's data to the specified destination starting at the currentreaderIndexuntil the destination's position reaches its limit, and increases thereaderIndexby the number of the transferred bytes.intreadBytes(java.nio.channels.GatheringByteChannel out, int length)Transfers this buffer's data to the specified stream starting at the currentreaderIndex.voidreadBytes(ChannelBuffer dst)Transfers this buffer's data to the specified destination starting at the currentreaderIndexuntil the destination becomes non-writable, and increases thereaderIndexby the number of the transferred bytes.voidreadBytes(ChannelBuffer dst, int length)Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length).voidreadBytes(ChannelBuffer dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length).charreadChar()Gets a 2-byte UTF-16 character at the currentreaderIndexand increases thereaderIndexby2in this buffer.doublereadDouble()Gets a 64-bit floating point number at the currentreaderIndexand increases thereaderIndexby8in this buffer.intreaderIndex()Returns thereaderIndexof this buffer.voidreaderIndex(int readerIndex)Sets thereaderIndexof this buffer.floatreadFloat()Gets a 32-bit floating point number at the currentreaderIndexand increases thereaderIndexby4in this buffer.intreadInt()Gets a 32-bit integer at the currentreaderIndexand increases thereaderIndexby4in this buffer.longreadLong()Gets a 64-bit integer at the currentreaderIndexand increases thereaderIndexby8in this buffer.intreadMedium()Gets a 24-bit medium integer at the currentreaderIndexand increases thereaderIndexby3in this buffer.shortreadShort()Gets a 16-bit short integer at the currentreaderIndexand increases thereaderIndexby2in this buffer.ChannelBufferreadSlice(int length)Returns a new slice of this buffer's sub-region starting at the currentreaderIndexand increases thereaderIndexby the size of the new slice (=length).shortreadUnsignedByte()Gets an unsigned byte at the currentreaderIndexand increases thereaderIndexby1in this buffer.longreadUnsignedInt()Gets an unsigned 32-bit integer at the currentreaderIndexand increases thereaderIndexby4in this buffer.intreadUnsignedMedium()Gets an unsigned 24-bit medium integer at the currentreaderIndexand increases thereaderIndexby3in this buffer.intreadUnsignedShort()Gets an unsigned 16-bit short integer at the currentreaderIndexand increases thereaderIndexby2in this buffer.voidresetReaderIndex()Repositions the currentreaderIndexto the markedreaderIndexin this buffer.voidresetWriterIndex()Repositions the currentwriterIndexto the markedwriterIndexin this buffer.voidsetByte(int index, int value)Sets the specified byte at the specified absoluteindexin this buffer.voidsetBytes(int index, byte[] src)Transfers the specified source array's data to this buffer starting at the specified absoluteindex.voidsetBytes(int index, byte[] src, int srcIndex, int length)Transfers the specified source array's data to this buffer starting at the specified absoluteindex.intsetBytes(int index, java.io.InputStream in, int length)Transfers the content of the specified source stream to this buffer starting at the specified absoluteindex.voidsetBytes(int index, java.nio.ByteBuffer src)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer's position reaches its limit.intsetBytes(int index, java.nio.channels.ScatteringByteChannel in, int length)Transfers the content of the specified source channel to this buffer starting at the specified absoluteindex.voidsetBytes(int index, ChannelBuffer src)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer becomes unreadable.voidsetBytes(int index, ChannelBuffer src, int length)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex.voidsetBytes(int index, ChannelBuffer src, int srcIndex, int length)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex.voidsetChar(int index, int value)Sets the specified 2-byte UTF-16 character at the specified absoluteindexin this buffer.voidsetDouble(int index, double value)Sets the specified 64-bit floating-point number at the specified absoluteindexin this buffer.voidsetFloat(int index, float value)Sets the specified 32-bit floating-point number at the specified absoluteindexin this buffer.voidsetIndex(int readerIndex, int writerIndex)Sets thereaderIndexandwriterIndexof this buffer in one shot.voidsetInt(int index, int value)Sets the specified 32-bit integer at the specified absoluteindexin this buffer.voidsetLong(int index, long value)Sets the specified 64-bit long integer at the specified absoluteindexin this buffer.voidsetMedium(int index, int value)Sets the specified 24-bit medium integer at the specified absoluteindexin this buffer.voidsetShort(int index, int value)Sets the specified 16-bit short integer at the specified absoluteindexin this buffer.voidsetZero(int index, int length)Fills this buffer with NUL (0x00) starting at the specified absoluteindex.voidskipBytes(int length)Increases the currentreaderIndexby the specifiedlengthin this buffer.ChannelBufferslice()Returns a slice of this buffer's readable bytes.ChannelBufferslice(int index, int length)Returns a slice of this buffer's sub-region.java.nio.ByteBuffertoByteBuffer()Converts this buffer's readable bytes into a NIO buffer.java.nio.ByteBuffertoByteBuffer(int index, int length)Converts this buffer's sub-region into a NIO buffer.java.nio.ByteBuffer[]toByteBuffers()Converts this buffer's readable bytes into an array of NIO buffers.java.nio.ByteBuffer[]toByteBuffers(int index, int length)Converts this buffer's sub-region into an array of NIO buffers.java.lang.StringtoString()Returns the string representation of this buffer.java.lang.StringtoString(int index, int length, java.nio.charset.Charset charset)Decodes this buffer's sub-region into a string with the specified character set.java.lang.StringtoString(java.nio.charset.Charset charset)Decodes this buffer's readable bytes into a string with the specified character set name.booleanwritable()Returnstrueif and only if(this.capacity - this.writerIndex)is greater than0.intwritableBytes()Returns the number of writable bytes which is equal to(this.capacity - this.writerIndex).voidwriteByte(int value)Sets the specified byte at the currentwriterIndexand increases thewriterIndexby1in this buffer.voidwriteBytes(byte[] src)Transfers the specified source array's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=src.length).voidwriteBytes(byte[] src, int srcIndex, int length)Transfers the specified source array's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).intwriteBytes(java.io.InputStream in, int length)Transfers the content of the specified stream to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.voidwriteBytes(java.nio.ByteBuffer src)Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexuntil the source buffer's position reaches its limit, and increases thewriterIndexby the number of the transferred bytes.intwriteBytes(java.nio.channels.ScatteringByteChannel in, int length)Transfers the content of the specified channel to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.voidwriteBytes(ChannelBuffer src)Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexuntil the source buffer becomes unreadable, and increases thewriterIndexby the number of the transferred bytes.voidwriteBytes(ChannelBuffer src, int length)Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).voidwriteBytes(ChannelBuffer src, int srcIndex, int length)Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).voidwriteChar(int value)Sets the specified 2-byte UTF-16 character at the currentwriterIndexand increases thewriterIndexby2in this buffer.voidwriteDouble(double value)Sets the specified 64-bit floating point number at the currentwriterIndexand increases thewriterIndexby8in this buffer.voidwriteFloat(float value)Sets the specified 32-bit floating point number at the currentwriterIndexand increases thewriterIndexby4in this buffer.voidwriteInt(int value)Sets the specified 32-bit integer at the currentwriterIndexand increases thewriterIndexby4in this buffer.voidwriteLong(long value)Sets the specified 64-bit long integer at the currentwriterIndexand increases thewriterIndexby8in this buffer.voidwriteMedium(int value)Sets the specified 24-bit medium integer at the currentwriterIndexand increases thewriterIndexby3in this buffer.intwriterIndex()Returns thewriterIndexof this buffer.voidwriterIndex(int writerIndex)Sets thewriterIndexof this buffer.voidwriteShort(int value)Sets the specified 16-bit short integer at the currentwriterIndexand increases thewriterIndexby2in this buffer.voidwriteZero(int length)Fills this buffer with NUL (0x00) starting at the currentwriterIndexand increases thewriterIndexby the specifiedlength.
-
-
-
Method Detail
-
factory
ChannelBufferFactory factory()
Returns the factory which creates aChannelBufferwhose type and defaultByteOrderare same with this buffer.
-
capacity
int capacity()
Returns the number of bytes (octets) this buffer can contain.
-
order
java.nio.ByteOrder order()
Returns the endianness of this buffer.
-
isDirect
boolean isDirect()
Returnstrueif and only if this buffer is backed by an NIO direct buffer.
-
readerIndex
int readerIndex()
Returns thereaderIndexof this buffer.
-
readerIndex
void readerIndex(int readerIndex)
Sets thereaderIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedreaderIndexis less than0or greater thanthis.writerIndex
-
writerIndex
int writerIndex()
Returns thewriterIndexof this buffer.
-
writerIndex
void writerIndex(int writerIndex)
Sets thewriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedwriterIndexis less thanthis.readerIndexor greater thanthis.capacity
-
setIndex
void setIndex(int readerIndex, int writerIndex)Sets thereaderIndexandwriterIndexof 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:ChannelBufferbuf =ChannelBuffers.buffer(8); // IndexOutOfBoundsException is thrown because the specified // readerIndex (2) cannot be greater than the current writerIndex (0). buf.readerIndex(2); buf.writerIndex(4);// Create a buffer whose readerIndex, writerIndex and capacity are // 0, 8 and 8 respectively.
By contrast, this method guarantees that it never throws anChannelBufferbuf =ChannelBuffers.wrappedBuffer(new byte[8]); // readerIndex becomes 8. buf.readLong(); // IndexOutOfBoundsException is thrown because the specified // writerIndex (4) cannot be less than the current readerIndex (8). buf.writerIndex(4); buf.readerIndex(2);IndexOutOfBoundsExceptionas 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:
java.lang.IndexOutOfBoundsException- if the specifiedreaderIndexis less than 0, if the specifiedwriterIndexis less than the specifiedreaderIndexor if the specifiedwriterIndexis greater thanthis.capacity
-
readableBytes
int readableBytes()
Returns the number of readable bytes which is equal to(this.writerIndex - this.readerIndex).
-
writableBytes
int writableBytes()
Returns the number of writable bytes which is equal to(this.capacity - this.writerIndex).
-
readable
boolean readable()
Returnstrueif and only if(this.writerIndex - this.readerIndex)is greater than0.
-
writable
boolean writable()
Returnstrueif and only if(this.capacity - this.writerIndex)is greater than0.
-
clear
void clear()
Sets thereaderIndexandwriterIndexof 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
limitto thecapacityof the buffer.
-
markReaderIndex
void markReaderIndex()
Marks the currentreaderIndexin this buffer. You can reposition the currentreaderIndexto the markedreaderIndexby callingresetReaderIndex(). The initial value of the markedreaderIndexis0.
-
resetReaderIndex
void resetReaderIndex()
Repositions the currentreaderIndexto the markedreaderIndexin this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the currentwriterIndexis less than the markedreaderIndex
-
markWriterIndex
void markWriterIndex()
Marks the currentwriterIndexin this buffer. You can reposition the currentwriterIndexto the markedwriterIndexby callingresetWriterIndex(). The initial value of the markedwriterIndexis0.
-
resetWriterIndex
void resetWriterIndex()
Repositions the currentwriterIndexto the markedwriterIndexin this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the currentreaderIndexis greater than the markedwriterIndex
-
discardReadBytes
void discardReadBytes()
Discards the bytes between the 0th index andreaderIndex. It moves the bytes betweenreaderIndexandwriterIndexto the 0th index, and setsreaderIndexandwriterIndexto0andoldWriterIndex - oldReaderIndexrespectively.Please refer to the class documentation for more detailed explanation.
-
ensureWritableBytes
void ensureWritableBytes(int writableBytes)
Makes sure the number of the writable bytes is equal to or greater than the specified value. If there is enough writable bytes in this buffer, this method returns with no side effect. Otherwise:- a non-dynamic buffer will throw an
IndexOutOfBoundsException. - a dynamic buffer will expand its capacity so that the number of the
writable bytesbecomes equal to or greater than the specified value. The expansion involves the reallocation of the internal buffer and consequently memory copy.
- Parameters:
writableBytes- the expected minimum number of writable bytes- Throws:
java.lang.IndexOutOfBoundsException- if the writable bytes of this buffer is less than the specified value and if this buffer is not a dynamic buffer
- a non-dynamic buffer will throw an
-
getByte
byte getByte(int index)
Gets a byte at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 1is greater thanthis.capacity
-
getUnsignedByte
short getUnsignedByte(int index)
Gets an unsigned byte at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 1is greater thanthis.capacity
-
getShort
short getShort(int index)
Gets a 16-bit short integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 2is greater thanthis.capacity
-
getUnsignedShort
int getUnsignedShort(int index)
Gets an unsigned 16-bit short integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 2is greater thanthis.capacity
-
getMedium
int getMedium(int index)
Gets a 24-bit medium integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 3is greater thanthis.capacity
-
getUnsignedMedium
int getUnsignedMedium(int index)
Gets an unsigned 24-bit medium integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 3is greater thanthis.capacity
-
getInt
int getInt(int index)
Gets a 32-bit integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 4is greater thanthis.capacity
-
getUnsignedInt
long getUnsignedInt(int index)
Gets an unsigned 32-bit integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 4is greater thanthis.capacity
-
getLong
long getLong(int index)
Gets a 64-bit long integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 8is greater thanthis.capacity
-
getChar
char getChar(int index)
Gets a 2-byte UTF-16 character at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 2is greater thanthis.capacity
-
getFloat
float getFloat(int index)
Gets a 32-bit floating point number at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 4is greater thanthis.capacity
-
getDouble
double getDouble(int index)
Gets a 64-bit floating point number at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 8is greater thanthis.capacity
-
getBytes
void getBytes(int index, ChannelBuffer dst)Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination becomes non-writable. This method is basically same withgetBytes(int, ChannelBuffer, int, int), except that this method increases thewriterIndexof the destination by the number of the transferred bytes whilegetBytes(int, ChannelBuffer, int, int)does not. This method does not modifyreaderIndexorwriterIndexof the source buffer (i.e.this).- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + dst.writableBytesis greater thanthis.capacity
-
getBytes
void getBytes(int index, ChannelBuffer dst, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method is basically same withgetBytes(int, ChannelBuffer, int, int), except that this method increases thewriterIndexof the destination by the number of the transferred bytes whilegetBytes(int, ChannelBuffer, int, int)does not. This method does not modifyreaderIndexorwriterIndexof the source buffer (i.e.this).- Parameters:
length- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0, ifindex + lengthis greater thanthis.capacity, or iflengthis greater thandst.writableBytes
-
getBytes
void getBytes(int index, ChannelBuffer dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof both the source (i.e.this) and the destination.- Parameters:
dstIndex- the first index of the destinationlength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0, if the specifieddstIndexis less than0, ifindex + lengthis greater thanthis.capacity, or ifdstIndex + lengthis greater thandst.capacity
-
getBytes
void getBytes(int index, byte[] dst)Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + dst.lengthis greater thanthis.capacity
-
getBytes
void getBytes(int index, byte[] dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
dstIndex- the first index of the destinationlength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0, if the specifieddstIndexis less than0, ifindex + lengthis greater thanthis.capacity, or ifdstIndex + lengthis greater thandst.length
-
getBytes
void getBytes(int index, java.nio.ByteBuffer dst)Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination's position reaches its limit. This method does not modifyreaderIndexorwriterIndexof this buffer while the destination'spositionwill be increased.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + dst.remaining()is greater thanthis.capacity
-
getBytes
void getBytes(int index, java.io.OutputStream out, int length) throws java.io.IOExceptionTransfers this buffer's data to the specified stream starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + lengthis greater thanthis.capacityjava.io.IOException- if the specified stream threw an exception during I/O
-
getBytes
int getBytes(int index, java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOExceptionTransfers this buffer's data to the specified channel starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + lengthis greater thanthis.capacityjava.io.IOException- if the specified channel threw an exception during I/O
-
setByte
void setByte(int index, int value)Sets the specified byte at the specified absoluteindexin this buffer. The 24 high-order bits of the specified value are ignored. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 1is greater thanthis.capacity
-
setShort
void setShort(int index, int value)Sets the specified 16-bit short integer at the specified absoluteindexin this buffer. The 16 high-order bits of the specified value are ignored. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 2is greater thanthis.capacity
-
setMedium
void setMedium(int index, int value)Sets the specified 24-bit medium integer at the specified absoluteindexin this buffer. Please note that the most significant byte is ignored in the specified value. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 3is greater thanthis.capacity
-
setInt
void setInt(int index, int value)Sets the specified 32-bit integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 4is greater thanthis.capacity
-
setLong
void setLong(int index, long value)Sets the specified 64-bit long integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 8is greater thanthis.capacity
-
setChar
void setChar(int index, int value)Sets the specified 2-byte UTF-16 character at the specified absoluteindexin this buffer. The 16 high-order bits of the specified value are ignored. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 2is greater thanthis.capacity
-
setFloat
void setFloat(int index, float value)Sets the specified 32-bit floating-point number at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 4is greater thanthis.capacity
-
setDouble
void setDouble(int index, double value)Sets the specified 64-bit floating-point number at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0orindex + 8is greater thanthis.capacity
-
setBytes
void setBytes(int index, ChannelBuffer src)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer becomes unreadable. This method is basically same withsetBytes(int, ChannelBuffer, int, int), except that this method increases thereaderIndexof the source buffer by the number of the transferred bytes whilesetBytes(int, ChannelBuffer, int, int)does not. This method does not modifyreaderIndexorwriterIndexof the source buffer (i.e.this).- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + src.readableBytesis greater thanthis.capacity
-
setBytes
void setBytes(int index, ChannelBuffer src, int length)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex. This method is basically same withsetBytes(int, ChannelBuffer, int, int), except that this method increases thereaderIndexof the source buffer by the number of the transferred bytes whilesetBytes(int, ChannelBuffer, int, int)does not. This method does not modifyreaderIndexorwriterIndexof the source buffer (i.e.this).- Parameters:
length- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0, ifindex + lengthis greater thanthis.capacity, or iflengthis greater thansrc.readableBytes
-
setBytes
void setBytes(int index, ChannelBuffer src, int srcIndex, int length)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof both the source (i.e.this) and the destination.- Parameters:
srcIndex- the first index of the sourcelength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0, if the specifiedsrcIndexis less than0, ifindex + lengthis greater thanthis.capacity, or ifsrcIndex + lengthis greater thansrc.capacity
-
setBytes
void setBytes(int index, byte[] src)Transfers the specified source array's data to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + src.lengthis greater thanthis.capacity
-
setBytes
void setBytes(int index, byte[] src, int srcIndex, int length)Transfers the specified source array's data to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0, if the specifiedsrcIndexis less than0, ifindex + lengthis greater thanthis.capacity, or ifsrcIndex + lengthis greater thansrc.length
-
setBytes
void setBytes(int index, java.nio.ByteBuffer src)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer's position reaches its limit. This method does not modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + src.remaining()is greater thanthis.capacity
-
setBytes
int setBytes(int index, java.io.InputStream in, int length) throws java.io.IOExceptionTransfers the content of the specified source stream to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1if the specified channel is closed. - Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + lengthis greater thanthis.capacityjava.io.IOException- if the specified stream threw an exception during I/O
-
setBytes
int setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOExceptionTransfers the content of the specified source channel to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1if the specified channel is closed. - Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + lengthis greater thanthis.capacityjava.io.IOException- if the specified channel threw an exception during I/O
-
setZero
void setZero(int index, int length)Fills this buffer with NUL (0x00) starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the number of NULs to write to the buffer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedindexis less than0or ifindex + lengthis greater thanthis.capacity
-
readByte
byte readByte()
Gets a byte at the currentreaderIndexand increases thereaderIndexby1in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than1
-
readUnsignedByte
short readUnsignedByte()
Gets an unsigned byte at the currentreaderIndexand increases thereaderIndexby1in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than1
-
readShort
short readShort()
Gets a 16-bit short integer at the currentreaderIndexand increases thereaderIndexby2in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than2
-
readUnsignedShort
int readUnsignedShort()
Gets an unsigned 16-bit short integer at the currentreaderIndexand increases thereaderIndexby2in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than2
-
readMedium
int readMedium()
Gets a 24-bit medium integer at the currentreaderIndexand increases thereaderIndexby3in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than3
-
readUnsignedMedium
int readUnsignedMedium()
Gets an unsigned 24-bit medium integer at the currentreaderIndexand increases thereaderIndexby3in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than3
-
readInt
int readInt()
Gets a 32-bit integer at the currentreaderIndexand increases thereaderIndexby4in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than4
-
readUnsignedInt
long readUnsignedInt()
Gets an unsigned 32-bit integer at the currentreaderIndexand increases thereaderIndexby4in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than4
-
readLong
long readLong()
Gets a 64-bit integer at the currentreaderIndexand increases thereaderIndexby8in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than8
-
readChar
char readChar()
Gets a 2-byte UTF-16 character at the currentreaderIndexand increases thereaderIndexby2in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than2
-
readFloat
float readFloat()
Gets a 32-bit floating point number at the currentreaderIndexand increases thereaderIndexby4in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than4
-
readDouble
double readDouble()
Gets a 64-bit floating point number at the currentreaderIndexand increases thereaderIndexby8in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.readableBytesis less than8
-
readBytes
ChannelBuffer readBytes(int length)
Transfers this buffer's data to a newly created buffer starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length). The returned buffer'sreaderIndexandwriterIndexare0andlengthrespectively.- Parameters:
length- the number of bytes to transfer- Returns:
- the newly created buffer which contains the transferred bytes
- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytes
-
readSlice
ChannelBuffer readSlice(int length)
Returns a new slice of this buffer's sub-region starting at the currentreaderIndexand increases thereaderIndexby the size of the new slice (=length).- Parameters:
length- the size of the new slice- Returns:
- the newly created slice
- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytes
-
readBytes
void readBytes(ChannelBuffer dst)
Transfers this buffer's data to the specified destination starting at the currentreaderIndexuntil the destination becomes non-writable, and increases thereaderIndexby the number of the transferred bytes. This method is basically same withreadBytes(ChannelBuffer, int, int), except that this method increases thewriterIndexof the destination by the number of the transferred bytes whilereadBytes(ChannelBuffer, int, int)does not.- Throws:
java.lang.IndexOutOfBoundsException- ifdst.writableBytesis greater thanthis.readableBytes
-
readBytes
void readBytes(ChannelBuffer dst, int length)
Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length). This method is basically same withreadBytes(ChannelBuffer, int, int), except that this method increases thewriterIndexof the destination by the number of the transferred bytes (=length) whilereadBytes(ChannelBuffer, int, int)does not.- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytesor iflengthis greater thandst.writableBytes
-
readBytes
void readBytes(ChannelBuffer dst, int dstIndex, int length)
Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length).- Parameters:
dstIndex- the first index of the destinationlength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifieddstIndexis less than0, iflengthis greater thanthis.readableBytes, or ifdstIndex + lengthis greater thandst.capacity
-
readBytes
void readBytes(byte[] dst)
Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=dst.length).- Throws:
java.lang.IndexOutOfBoundsException- ifdst.lengthis greater thanthis.readableBytes
-
readBytes
void readBytes(byte[] dst, int dstIndex, int length)Transfers this buffer's data to the specified destination starting at the currentreaderIndexand increases thereaderIndexby the number of the transferred bytes (=length).- Parameters:
dstIndex- the first index of the destinationlength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifieddstIndexis less than0, iflengthis greater thanthis.readableBytes, or ifdstIndex + lengthis greater thandst.length
-
readBytes
void readBytes(java.nio.ByteBuffer dst)
Transfers this buffer's data to the specified destination starting at the currentreaderIndexuntil the destination's position reaches its limit, and increases thereaderIndexby the number of the transferred bytes.- Throws:
java.lang.IndexOutOfBoundsException- ifdst.remaining()is greater thanthis.readableBytes
-
readBytes
void readBytes(java.io.OutputStream out, int length) throws java.io.IOExceptionTransfers this buffer's data to the specified stream starting at the currentreaderIndex.- Parameters:
length- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytesjava.io.IOException- if the specified stream threw an exception during I/O
-
readBytes
int readBytes(java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOExceptionTransfers 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:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytesjava.io.IOException- if the specified channel threw an exception during I/O
-
skipBytes
void skipBytes(int length)
Increases the currentreaderIndexby the specifiedlengthin this buffer.- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytes
-
writeByte
void writeByte(int value)
Sets the specified byte at the currentwriterIndexand increases thewriterIndexby1in this buffer. The 24 high-order bits of the specified value are ignored.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than1
-
writeShort
void writeShort(int value)
Sets the specified 16-bit short integer at the currentwriterIndexand increases thewriterIndexby2in this buffer. The 16 high-order bits of the specified value are ignored.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than2
-
writeMedium
void writeMedium(int value)
Sets the specified 24-bit medium integer at the currentwriterIndexand increases thewriterIndexby3in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than3
-
writeInt
void writeInt(int value)
Sets the specified 32-bit integer at the currentwriterIndexand increases thewriterIndexby4in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than4
-
writeLong
void writeLong(long value)
Sets the specified 64-bit long integer at the currentwriterIndexand increases thewriterIndexby8in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than8
-
writeChar
void writeChar(int value)
Sets the specified 2-byte UTF-16 character at the currentwriterIndexand increases thewriterIndexby2in this buffer. The 16 high-order bits of the specified value are ignored.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than2
-
writeFloat
void writeFloat(float value)
Sets the specified 32-bit floating point number at the currentwriterIndexand increases thewriterIndexby4in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than4
-
writeDouble
void writeDouble(double value)
Sets the specified 64-bit floating point number at the currentwriterIndexand increases thewriterIndexby8in this buffer.- Throws:
java.lang.IndexOutOfBoundsException- ifthis.writableBytesis less than8
-
writeBytes
void writeBytes(ChannelBuffer src)
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexuntil the source buffer becomes unreadable, and increases thewriterIndexby the number of the transferred bytes. This method is basically same withwriteBytes(ChannelBuffer, int, int), except that this method increases thereaderIndexof the source buffer by the number of the transferred bytes whilewriteBytes(ChannelBuffer, int, int)does not.- Throws:
java.lang.IndexOutOfBoundsException- ifsrc.readableBytesis greater thanthis.writableBytes
-
writeBytes
void writeBytes(ChannelBuffer src, int length)
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length). This method is basically same withwriteBytes(ChannelBuffer, int, int), except that this method increases thereaderIndexof the source buffer by the number of the transferred bytes (=length) whilewriteBytes(ChannelBuffer, int, int)does not.- Parameters:
length- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.writableBytesor iflengthis greater thensrc.readableBytes
-
writeBytes
void writeBytes(ChannelBuffer src, int srcIndex, int length)
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).- Parameters:
srcIndex- the first index of the sourcelength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedsrcIndexis less than0, ifsrcIndex + lengthis greater thansrc.capacity, or iflengthis greater thanthis.writableBytes
-
writeBytes
void writeBytes(byte[] src)
Transfers the specified source array's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=src.length).- Throws:
java.lang.IndexOutOfBoundsException- ifsrc.lengthis greater thanthis.writableBytes
-
writeBytes
void writeBytes(byte[] src, int srcIndex, int length)Transfers the specified source array's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).- Parameters:
srcIndex- the first index of the sourcelength- the number of bytes to transfer- Throws:
java.lang.IndexOutOfBoundsException- if the specifiedsrcIndexis less than0, ifsrcIndex + lengthis greater thansrc.length, or iflengthis greater thanthis.writableBytes
-
writeBytes
void writeBytes(java.nio.ByteBuffer src)
Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexuntil the source buffer's position reaches its limit, and increases thewriterIndexby the number of the transferred bytes.- Throws:
java.lang.IndexOutOfBoundsException- ifsrc.remaining()is greater thanthis.writableBytes
-
writeBytes
int writeBytes(java.io.InputStream in, int length) throws java.io.IOExceptionTransfers the content of the specified stream to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.- Parameters:
length- the number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified stream
- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.writableBytesjava.io.IOException- if the specified stream threw an exception during I/O
-
writeBytes
int writeBytes(java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOExceptionTransfers the content of the specified channel to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.- Parameters:
length- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel
- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.writableBytesjava.io.IOException- if the specified channel threw an exception during I/O
-
writeZero
void writeZero(int length)
Fills this buffer with NUL (0x00) starting at the currentwriterIndexand increases thewriterIndexby the specifiedlength.- Parameters:
length- the number of NULs to write to the buffer- Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.writableBytes
-
indexOf
int indexOf(int fromIndex, int toIndex, byte value)Locates the first occurrence of the specifiedvaluein this buffer. The search takes place from the specifiedfromIndex(inclusive) to the specifiedtoIndex(exclusive).If
fromIndexis greater thantoIndex, the search is performed in a reversed order.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the absolute index of the first occurrence if found.
-1otherwise.
-
indexOf
int indexOf(int fromIndex, int toIndex, ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue. The search takes place from the specifiedfromIndex(inclusive) to the specifiedtoIndex(exclusive).If
fromIndexis greater thantoIndex, the search is performed in a reversed order.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the absolute index where the specified
indexFinderreturnedtrue.-1if theindexFinderdid not returntrueat all.
-
bytesBefore
int bytesBefore(byte value)
Locates the first occurrence of the specifiedvaluein this buffer. The search takes place from the currentreaderIndex(inclusive) to the currentwriterIndex(exclusive).This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the number of bytes between the current
readerIndexand the first occurrence if found.-1otherwise.
-
bytesBefore
int bytesBefore(ChannelBufferIndexFinder indexFinder)
Locates the first place where the specifiedindexFinderreturnstrue. The search takes place from the currentreaderIndex(inclusive) to the currentwriterIndex.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the number of bytes between the current
readerIndexand the first place where theindexFinderreturnedtrue.-1if theindexFinderdid not returntrueat all.
-
bytesBefore
int bytesBefore(int length, byte value)Locates the first occurrence of the specifiedvaluein this buffer. The search starts from the currentreaderIndex(inclusive) and lasts for the specifiedlength.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the number of bytes between the current
readerIndexand the first occurrence if found.-1otherwise. - Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytes
-
bytesBefore
int bytesBefore(int length, ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue. The search starts the currentreaderIndex(inclusive) and lasts for the specifiedlength.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the number of bytes between the current
readerIndexand the first place where theindexFinderreturnedtrue.-1if theindexFinderdid not returntrueat all. - Throws:
java.lang.IndexOutOfBoundsException- iflengthis greater thanthis.readableBytes
-
bytesBefore
int bytesBefore(int index, int length, byte value)Locates the first occurrence of the specifiedvaluein this buffer. The search starts from the specifiedindex(inclusive) and lasts for the specifiedlength.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the number of bytes between the specified
indexand the first occurrence if found.-1otherwise. - Throws:
java.lang.IndexOutOfBoundsException- ifindex + lengthis greater thanthis.capacity
-
bytesBefore
int bytesBefore(int index, int length, ChannelBufferIndexFinder indexFinder)Locates the first place where the specifiedindexFinderreturnstrue. The search starts the specifiedindex(inclusive) and lasts for the specifiedlength.This method does not modify
readerIndexorwriterIndexof this buffer.- Returns:
- the number of bytes between the specified
indexand the first place where theindexFinderreturnedtrue.-1if theindexFinderdid not returntrueat all. - Throws:
java.lang.IndexOutOfBoundsException- ifindex + lengthis greater thanthis.capacity
-
copy
ChannelBuffer 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 modifyreaderIndexorwriterIndexof this buffer.
-
copy
ChannelBuffer copy(int index, int length)
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 modifyreaderIndexorwriterIndexof this buffer.
-
slice
ChannelBuffer 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 modifyreaderIndexorwriterIndexof this buffer.
-
slice
ChannelBuffer slice(int index, int length)
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 modifyreaderIndexorwriterIndexof this buffer.
-
duplicate
ChannelBuffer 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 is identical tobuf.slice(0, buf.capacity()). This method does not modifyreaderIndexorwriterIndexof this buffer.
-
toByteBuffer
java.nio.ByteBuffer toByteBuffer()
Converts this buffer's readable bytes into a NIO buffer. The returned buffer might or might not share the content with this buffer, while they have separate indexes and marks. This method is identical tobuf.toByteBuffer(buf.readerIndex(), buf.readableBytes()). This method does not modifyreaderIndexorwriterIndexof this buffer.
-
toByteBuffer
java.nio.ByteBuffer toByteBuffer(int index, int length)Converts this buffer's sub-region into a NIO buffer. The returned buffer might or might not share the content with this buffer, while they have separate indexes and marks. This method does not modifyreaderIndexorwriterIndexof this buffer.
-
toByteBuffers
java.nio.ByteBuffer[] toByteBuffers()
Converts this buffer's readable bytes into an array of NIO buffers. The returned buffers might or might not share the content with this buffer, while they have separate indexes and marks. This method is identical tobuf.toByteBuffers(buf.readerIndex(), buf.readableBytes()). This method does not modifyreaderIndexorwriterIndexof this buffer.
-
toByteBuffers
java.nio.ByteBuffer[] toByteBuffers(int index, int length)Converts this buffer's sub-region into an array of NIO buffers. The returned buffers might or might not share the content with this buffer, while they have separate indexes and marks. This method does not modifyreaderIndexorwriterIndexof this buffer.
-
hasArray
boolean hasArray()
Returnstrueif and only if this buffer has a backing byte array. If this method returns true, you can safely callarray()andarrayOffset().
-
array
byte[] array()
Returns the backing byte array of this buffer.- Throws:
java.lang.UnsupportedOperationException- if there no accessible backing byte array
-
arrayOffset
int arrayOffset()
Returns the offset of the first byte within the backing byte array of this buffer.- Throws:
java.lang.UnsupportedOperationException- if there no accessible backing byte array
-
toString
java.lang.String toString(java.nio.charset.Charset charset)
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 modifyreaderIndexorwriterIndexof this buffer.- Throws:
java.nio.charset.UnsupportedCharsetException- if the specified character set name is not supported by the current VM
-
toString
java.lang.String toString(int index, int length, java.nio.charset.Charset charset)Decodes this buffer's sub-region into a string with the specified character set. This method does not modifyreaderIndexorwriterIndexof this buffer.
-
hashCode
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.- Overrides:
hashCodein classjava.lang.Object
-
equals
boolean equals(java.lang.Object obj)
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 returnsfalsefornulland an object which is not an instance ofChannelBuffertype.- Overrides:
equalsin classjava.lang.Object
-
compareTo
int compareTo(ChannelBuffer buffer)
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,memcmpandString.compareTo(String).- Specified by:
compareToin interfacejava.lang.Comparable<ChannelBuffer>
-
toString
java.lang.String 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().- Overrides:
toStringin classjava.lang.Object
-
-