Class IoBufferWrapper
- All Implemented Interfaces:
Comparable<IoBuffer>
- Direct Known Subclasses:
ProxyHandshakeIoBuffer
IoBuffer that wraps a buffer and proxies any operations to it.
You can think this class like a FileOutputStream. All operations are
proxied by default so that you can extend this class and override existing
operations selectively. You can introduce new operations, too.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbyte[]array()intbuf()intcapacity()capacity(int newCapacity) Increases the capacity of this buffer.clear()compact()intbooleanexpand(int expectedRemaining) Changes the capacity and limit of this buffer so this buffer get the specifiedexpectedRemainingroom from the current position.expand(int pos, int expectedRemaining) Changes the capacity and limit of this buffer so this buffer get the specifiedexpectedRemainingroom from the specifiedposition.fill(byte value, int size) Fills this buffer with the specified value.fill(int size) Fills this buffer withNUL (0x00).fillAndReset(byte value, int size) Fills this buffer with the specified value.fillAndReset(int size) Fills this buffer withNUL (0x00).flip()voidfree()Declares this buffer and all its derived buffers are not used anymore so that it can be reused by someIoBufferAllocatorimplementations.byteget()get(byte[] dst) get(byte[] dst, int offset, int length) byteget(int index) chargetChar()chargetChar(int index) doubledoublegetDouble(int index) <E extends Enum<E>>
EReads a byte from the buffer and returns the correlating enum constant defined by the specified enum type.<E extends Enum<E>>
EReads a byte from the buffer and returns the correlating enum constant defined by the specified enum type.<E extends Enum<E>>
EgetEnumInt(int index, Class<E> enumClass) Reads an int from the buffer and returns the correlating enum constant defined by the specified enum type.<E extends Enum<E>>
EgetEnumInt(Class<E> enumClass) Reads an int from the buffer and returns the correlating enum constant defined by the specified enum type.getEnumSet(int index, Class<E> enumClass) Reads a byte sized bit vector and converts it to anEnumSet.getEnumSet(Class<E> enumClass) Reads a byte sized bit vector and converts it to anEnumSet.getEnumSetInt(int index, Class<E> enumClass) Reads an int sized bit vector and converts it to anEnumSet.getEnumSetInt(Class<E> enumClass) Reads an int sized bit vector and converts it to anEnumSet.getEnumSetLong(int index, Class<E> enumClass) Reads a long sized bit vector and converts it to anEnumSet.getEnumSetLong(Class<E> enumClass) Reads a long sized bit vector and converts it to anEnumSet.getEnumSetShort(int index, Class<E> enumClass) Reads a short sized bit vector and converts it to anEnumSet.getEnumSetShort(Class<E> enumClass) Reads a short sized bit vector and converts it to anEnumSet.<E extends Enum<E>>
EgetEnumShort(int index, Class<E> enumClass) Reads a short from the buffer and returns the correlating enum constant defined by the specified enum type.<E extends Enum<E>>
EgetEnumShort(Class<E> enumClass) Reads a short from the buffer and returns the correlating enum constant defined by the specified enum type.floatgetFloat()floatgetFloat(int index) intgetInt()intgetInt(int index) longgetLong()longgetLong(int index) intRelative get method for reading a medium int value.intgetMediumInt(int index) Absolute get method for reading a medium int value.Reads a Java object from the buffer using the contextClassLoaderof the current thread.getObject(ClassLoader classLoader) Reads a Java object from the buffer using the specifiedclassLoader.getPrefixedString(int prefixLength, CharsetDecoder decoder) Reads a string which has a length field before the actual encoded string, using the specifieddecoderand returns it.getPrefixedString(CharsetDecoder decoder) Reads a string which has a 16-bit length field before the actual encoded string, using the specifieddecoderand returns it.shortgetShort()shortgetShort(int index) getSlice(int length) Get a new IoBuffer containing a slice of the current buffergetSlice(int index, int length) Get a new IoBuffer containing a slice of the current buffergetString(int fieldSize, CharsetDecoder decoder) Reads aNUL-terminated string from this buffer using the specifieddecoderand returns it.getString(CharsetDecoder decoder) Reads aNUL-terminated string from this buffer using the specifieddecoderand returns it.shortReads one unsigned byte as a short integer.shortgetUnsigned(int index) Reads one byte as an unsigned short integer.longReads four bytes unsigned integer.longgetUnsignedInt(int index) Reads four bytes unsigned integer.intRelative get method for reading an unsigned medium int value.intgetUnsignedMediumInt(int index) Absolute get method for reading an unsigned medium int value.intReads two bytes unsigned integer.intgetUnsignedShort(int index) Reads two bytes unsigned integer.booleanhasArray()inthashCode()booleanintindexOf(byte b) Returns the first occurrence position of the specified byte from the current position to the current limit.booleanbooleanbooleanbooleanisDirect()booleanintlimit()limit(int newLimit) mark()intintminimumCapacity(int minimumCapacity) Sets the minimum capacity of this buffer which is used to determine the new capacity of the buffer shrunk byIoBuffer.compact()andIoBuffer.shrink()operation.order()intposition()position(int newPosition) booleanprefixedDataAvailable(int prefixLength) booleanprefixedDataAvailable(int prefixLength, int maxDataLength) put(byte b) put(byte[] src) put(byte[] src, int offset, int length) put(int index, byte b) put(ByteBuffer src) Writes the content of the specifiedsrcinto this buffer.Writes the content of the specifiedsrcinto this buffer.putChar(char value) putChar(int index, char value) putDouble(double value) putDouble(int index, double value) Writes an enum's ordinal value to the buffer as a byte.Writes an enum's ordinal value to the buffer as a byte.putEnumInt(int index, Enum<?> e) Writes an enum's ordinal value to the buffer as an integer.putEnumInt(Enum<?> e) Writes an enum's ordinal value to the buffer as an integer.putEnumSet(int index, Set<E> set) Writes the specifiedSetto the buffer as a byte sized bit vector.putEnumSet(Set<E> set) Writes the specifiedSetto the buffer as a byte sized bit vector.putEnumSetInt(int index, Set<E> set) Writes the specifiedSetto the buffer as an int sized bit vector.putEnumSetInt(Set<E> set) Writes the specifiedSetto the buffer as an int sized bit vector.putEnumSetLong(int index, Set<E> set) Writes the specifiedSetto the buffer as a long sized bit vector.putEnumSetLong(Set<E> set) Writes the specifiedSetto the buffer as a long sized bit vector.putEnumSetShort(int index, Set<E> set) Writes the specifiedSetto the buffer as a short sized bit vector.putEnumSetShort(Set<E> set) Writes the specifiedSetto the buffer as a short sized bit vector.putEnumShort(int index, Enum<?> e) Writes an enum's ordinal value to the buffer as a short.putEnumShort(Enum<?> e) Writes an enum's ordinal value to the buffer as a short.putFloat(float value) putFloat(int index, float value) putInt(int value) putInt(int index, int value) putLong(int index, long value) putLong(long value) putMediumInt(int value) Relative put method for writing a medium int value.putMediumInt(int index, int value) Absolute put method for writing a medium int value.Writes the specified Java object to the buffer.putPrefixedString(CharSequence in, int prefixLength, int padding, byte padValue, CharsetEncoder encoder) Writes the content ofvalinto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder.putPrefixedString(CharSequence in, int prefixLength, int padding, CharsetEncoder encoder) Writes the content ofininto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder.putPrefixedString(CharSequence in, int prefixLength, CharsetEncoder encoder) Writes the content ofininto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder.putPrefixedString(CharSequence in, CharsetEncoder encoder) Writes the content ofininto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder.putShort(int index, short value) putShort(short value) putString(CharSequence in, int fieldSize, CharsetEncoder encoder) Writes the content ofininto this buffer as aNUL-terminated string using the specifiedencoder.putString(CharSequence in, CharsetEncoder encoder) Writes the content ofininto this buffer using the specifiedencoder.putUnsigned(byte value) Writes an unsigned byte into the ByteBufferputUnsigned(int value) Writes an unsigned byte into the ByteBufferputUnsigned(int index, byte value) Writes an unsigned byte into the ByteBuffer at a specified positionputUnsigned(int index, int value) Writes an unsigned byte into the ByteBuffer at a specified positionputUnsigned(int index, long value) Writes an unsigned byte into the ByteBuffer at a specified positionputUnsigned(int index, short value) Writes an unsigned byte into the ByteBuffer at a specified positionputUnsigned(long value) Writes an unsigned byte into the ByteBufferputUnsigned(short value) Writes an unsigned byte into the ByteBufferputUnsignedInt(byte value) Writes an unsigned int into the ByteBufferputUnsignedInt(int value) Writes an unsigned int into the ByteBufferputUnsignedInt(int index, byte value) Writes an unsigned int into the ByteBuffer at a specified positionputUnsignedInt(int index, int value) Writes an unsigned int into the ByteBuffer at a specified positionputUnsignedInt(int index, long value) Writes an unsigned int into the ByteBuffer at a specified positionputUnsignedInt(int index, short value) Writes an unsigned int into the ByteBuffer at a specified positionputUnsignedInt(long value) Writes an unsigned int into the ByteBufferputUnsignedInt(short value) Writes an unsigned int into the ByteBufferputUnsignedShort(byte value) Writes an unsigned short into the ByteBufferputUnsignedShort(int value) Writes an unsigned Short into the ByteBufferputUnsignedShort(int index, byte value) Writes an unsigned Short into the ByteBuffer at a specified positionputUnsignedShort(int index, int value) Writes an unsigned Short into the ByteBuffer at a specified positionputUnsignedShort(int index, long value) Writes an unsigned Short into the ByteBuffer at a specified positionputUnsignedShort(int index, short value) Writes an unsigned Short into the ByteBuffer at a specified positionputUnsignedShort(long value) Writes an unsigned Short into the ByteBufferputUnsignedShort(short value) Writes an unsigned Short into the ByteBufferintreset()rewind()setAutoExpand(boolean autoExpand) Turns on or offautoExpand.setAutoShrink(boolean autoShrink) Turns on or offautoShrink.shrink()Changes the capacity of this buffer so this buffer occupies as less memory as possible while retaining the position, limit and the buffer content between the position and limit.skip(int size) Forwards the position of this buffer as the specifiedsizebytes.slice()sweep()Clears this buffer and fills its content withNUL.sweep(byte value) double Clears this buffer and fills its content withvalue.toString()Methods inherited from class IoBuffer
allocate, allocate, getAllocator, getHexDump, getHexDump, getHexDump, getHexDump, isUseDirectBuffer, normalizeCapacity, setAllocator, setUseDirectBuffer, wrap, wrap, wrap
-
Field Details
-
buf
The buffer proxied by this proxy.
-
-
Constructor Details
-
IoBufferWrapper
Create a new instance.- Parameters:
buf- the buffer to be proxied
-
-
Method Details
-
getParentBuffer
- Returns:
- the parent buffer that this buffer wrapped.
-
isDirect
-
buf
- Specified by:
bufin classIoBuffer- Returns:
- the underlying NIO
ByteBufferinstance.
-
capacity
-
position
-
position
-
limit
-
limit
-
mark
-
reset
-
clear
-
sweep
-
sweep
double Clears this buffer and fills its content withvalue. The position is set to zero, the limit is set to the capacity, and the mark is discarded. -
flip
-
rewind
-
remaining
-
hasRemaining
public boolean hasRemaining()- Specified by:
hasRemainingin classIoBuffer- Returns:
trueif there are some remaining bytes in the buffer- See Also:
-
get
-
getUnsigned
public short getUnsigned()Reads one unsigned byte as a short integer.- Specified by:
getUnsignedin classIoBuffer- Returns:
- the unsigned short at the current position
-
put
-
get
-
getUnsigned
public short getUnsigned(int index) Reads one byte as an unsigned short integer.- Specified by:
getUnsignedin classIoBuffer- Parameters:
index- The position for which we want to read an unsigned byte- Returns:
- the unsigned byte at the given position
-
put
-
get
-
getSlice
-
getSlice
-
get
-
put
-
put
Writes the content of the specifiedsrcinto this buffer. -
put
-
put
-
compact
-
toString
-
hashCode
-
equals
-
compareTo
-
order
-
order
-
getChar
-
putChar
-
getChar
-
putChar
-
asCharBuffer
- Specified by:
asCharBufferin classIoBuffer- Returns:
- a new CharBuffer
- See Also:
-
getShort
-
getUnsignedShort
public int getUnsignedShort()Reads two bytes unsigned integer.- Specified by:
getUnsignedShortin classIoBuffer- Returns:
- The read unsigned short
-
putShort
-
getShort
-
getUnsignedShort
public int getUnsignedShort(int index) Reads two bytes unsigned integer.- Specified by:
getUnsignedShortin classIoBuffer- Parameters:
index- The index in the IoBuffer where we will read an unsigned short from- Returns:
- the unsigned short at the given position
-
putShort
-
asShortBuffer
- Specified by:
asShortBufferin classIoBuffer- Returns:
- A ShortBuffer from this IoBuffer
- See Also:
-
getInt
-
getUnsignedInt
public long getUnsignedInt()Reads four bytes unsigned integer.- Specified by:
getUnsignedIntin classIoBuffer- Returns:
- The unsigned int read
-
putInt
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
value- the byte to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer at a specified position- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the byte to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
value- the short to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer at a specified position- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the short to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
value- the int to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer at a specified position- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the int to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
value- the long to write- Returns:
- the modified IoBuffer
-
putUnsignedInt
Writes an unsigned int into the ByteBuffer at a specified position- Specified by:
putUnsignedIntin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the long to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned short into the ByteBuffer- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
value- the byte to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer at a specified position- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the byte to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
value- the short to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer at a specified position- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
index- the position in the buffer to write the unsigned shortvalue- the unsigned short to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
value- the int to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer at a specified position- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the int to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
value- the long to write- Returns:
- the modified IoBuffer
-
putUnsignedShort
Writes an unsigned Short into the ByteBuffer at a specified position- Specified by:
putUnsignedShortin classIoBuffer- Parameters:
index- the position in the buffer to write the shortvalue- the long to write- Returns:
- the modified IoBuffer
-
getInt
-
getUnsignedInt
public long getUnsignedInt(int index) Reads four bytes unsigned integer.- Specified by:
getUnsignedIntin classIoBuffer- Parameters:
index- The index in the IoBuffer where we will read an unsigned int from- Returns:
- The long at the given position
-
putInt
-
asIntBuffer
- Specified by:
asIntBufferin classIoBuffer- Returns:
- the modified IoBuffer
- See Also:
-
getLong
-
putLong
-
getLong
-
putLong
-
asLongBuffer
- Specified by:
asLongBufferin classIoBuffer- Returns:
- a LongBuffer from this IoBffer
- See Also:
-
getFloat
-
putFloat
-
getFloat
-
putFloat
-
asFloatBuffer
- Specified by:
asFloatBufferin classIoBuffer- Returns:
- A FloatBuffer from this IoBuffer
- See Also:
-
getDouble
-
putDouble
-
getDouble
-
putDouble
-
asDoubleBuffer
- Specified by:
asDoubleBufferin classIoBuffer- Returns:
- A buffer containing Double
- See Also:
-
getString
Reads aNUL-terminated string from this buffer using the specifieddecoderand returns it.- Specified by:
getStringin classIoBuffer- Parameters:
fieldSize- the maximum number of bytes to readdecoder- TheCharsetDecoderto use- Returns:
- the read String
- Throws:
CharacterCodingException- Thrown when an error occurred while decoding the buffer
-
getString
Reads aNUL-terminated string from this buffer using the specifieddecoderand returns it. This method reads until the limit of this buffer if noNULis found.- Specified by:
getStringin classIoBuffer- Parameters:
decoder- TheCharsetDecoderto use- Returns:
- the read String
- Throws:
CharacterCodingException- Thrown when an error occurred while decoding the buffer
-
getPrefixedString
Reads a string which has a 16-bit length field before the actual encoded string, using the specifieddecoderand returns it. This method is a shortcut forgetPrefixedString(2, decoder).- Specified by:
getPrefixedStringin classIoBuffer- Parameters:
decoder- The CharsetDecoder to use- Returns:
- The read String
- Throws:
CharacterCodingException- When we have an error while decoding the String
-
getPrefixedString
public String getPrefixedString(int prefixLength, CharsetDecoder decoder) throws CharacterCodingException Reads a string which has a length field before the actual encoded string, using the specifieddecoderand returns it.- Specified by:
getPrefixedStringin classIoBuffer- Parameters:
prefixLength- the length of the length field (1, 2, or 4)decoder- The CharsetDecoder to use- Returns:
- The read String
- Throws:
CharacterCodingException- When we have an error while decoding the String
-
putString
public IoBuffer putString(CharSequence in, int fieldSize, CharsetEncoder encoder) throws CharacterCodingException Writes the content ofininto this buffer as aNUL-terminated string using the specifiedencoder.If the charset name of the encoder is UTF-16, you cannot specify odd
fieldSize, and this method will append twoNULs as a terminator.Please note that this method doesn't terminate with
NULif the input string is longer thanfieldSize.- Specified by:
putStringin classIoBuffer- Parameters:
in- The CharSequence to put in the IoBufferfieldSize- the maximum number of bytes to writeencoder- The CharsetEncoder to use- Returns:
- The modified IoBuffer
- Throws:
CharacterCodingException- When we have an error while decoding the String
-
putString
Writes the content ofininto this buffer using the specifiedencoder. This method doesn't terminate string withNUL. You have to do it by yourself.- Specified by:
putStringin classIoBuffer- Parameters:
in- The CharSequence to put in the IoBufferencoder- The CharsetEncoder to use- Returns:
- The modified IoBuffer
- Throws:
CharacterCodingException- When we have an error while decoding the String
-
putPrefixedString
public IoBuffer putPrefixedString(CharSequence in, CharsetEncoder encoder) throws CharacterCodingException Writes the content ofininto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder. This method is a shortcut forputPrefixedString(in, 2, 0, encoder).- Specified by:
putPrefixedStringin classIoBuffer- Parameters:
in- The CharSequence to put in the IoBufferencoder- The CharsetEncoder to use- Returns:
- The modified IoBuffer
- Throws:
CharacterCodingException- When we have an error while decoding the CharSequence
-
putPrefixedString
public IoBuffer putPrefixedString(CharSequence in, int prefixLength, CharsetEncoder encoder) throws CharacterCodingException Writes the content ofininto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder. This method is a shortcut forputPrefixedString(in, prefixLength, 0, encoder).- Specified by:
putPrefixedStringin classIoBuffer- Parameters:
in- The CharSequence to put in the IoBufferprefixLength- the length of the length field (1, 2, or 4)encoder- The CharsetEncoder to use- Returns:
- The modified IoBuffer
- Throws:
CharacterCodingException- When we have an error while decoding the CharSequence
-
putPrefixedString
public IoBuffer putPrefixedString(CharSequence in, int prefixLength, int padding, CharsetEncoder encoder) throws CharacterCodingException Writes the content ofininto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder. This method is a shortcut forputPrefixedString(in, prefixLength, padding, ( byte ) 0, encoder)- Specified by:
putPrefixedStringin classIoBuffer- Parameters:
in- The CharSequence to put in the IoBufferprefixLength- the length of the length field (1, 2, or 4)padding- the number of paddedNULs (1 (or 0), 2, or 4)encoder- The CharsetEncoder to use- Returns:
- The modified IoBuffer
- Throws:
CharacterCodingException- When we have an error while decoding the CharSequence
-
putPrefixedString
public IoBuffer putPrefixedString(CharSequence in, int prefixLength, int padding, byte padValue, CharsetEncoder encoder) throws CharacterCodingException Writes the content ofvalinto this buffer as a string which has a 16-bit length field before the actual encoded string, using the specifiedencoder.- Specified by:
putPrefixedStringin classIoBuffer- Parameters:
in- The CharSequence to put in teh IoBufferprefixLength- the length of the length field (1, 2, or 4)padding- the number of padded bytes (1 (or 0), 2, or 4)padValue- the value of padded bytesencoder- The CharsetEncoder to use- Returns:
- The modified IoBuffer
- Throws:
CharacterCodingException- When we have an error while decoding the CharSequence
-
skip
-
fill
-
fillAndReset
Fills this buffer with the specified value. This method does not change buffer position.- Specified by:
fillAndResetin classIoBuffer- Parameters:
value- The value to fill the IoBuffer withsize- The added size- Returns:
- The modified IoBuffer
-
fill
-
fillAndReset
Fills this buffer withNUL (0x00). This method does not change buffer position.- Specified by:
fillAndResetin classIoBuffer- Parameters:
size- The added size- Returns:
- The modified IoBuffer
-
isAutoExpand
public boolean isAutoExpand()- Specified by:
isAutoExpandin classIoBuffer- Returns:
trueif and only ifautoExpandis turned on.
-
setAutoExpand
Turns on or offautoExpand.- Specified by:
setAutoExpandin classIoBuffer- Parameters:
autoExpand- The flag value to set- Returns:
- The modified IoBuffer instance
-
expand
Changes the capacity and limit of this buffer so this buffer get the specifiedexpectedRemainingroom from the specifiedposition. This method works even if you didn't setautoExpandtotrue. Assuming a buffer contains N bytes, its position is P and its current capacity is C, here are the resulting buffer if we call the expand method with a expectedRemaining value V :Initial buffer : P L C +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ | | | pos limit capacity ( pos + V ) <= L, no change : P L C +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ | | | pos limit newCapacity You can still put ( L - pos ) bytes in the buffer ( pos + V ) > L & ( pos + V ) <= C : P L C +------------+------+ |XXXXXXXX:...| | +------------+------+ ^ ^ ^ | | | pos newlimit newCapacity You can now put ( L - pos + V) bytes in the buffer. ( pos + V ) > C P L C +-------------------+----+ |XXXXXXXX:..........:....| +------------------------+ ^ ^ | | pos +-- newlimit | +-- newCapacity You can now put ( L - pos + V ) bytes in the buffer, which limit is now equals to the capacity.Note that the expecting remaining bytes starts at the current position. In all those examples, the position is P. -
expand
Changes the capacity and limit of this buffer so this buffer get the specifiedexpectedRemainingroom from the current position. This method works even if you didn't setautoExpandtotrue.
Assuming a buffer contains N bytes, its position is P and its current capacity is C, here are the resulting buffer if we call the expand method with a expectedRemaining value V :Initial buffer : 0 L C +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ | | | pos limit capacity ( pos + V ) <= L, no change : 0 L C +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ | | | pos limit newCapacity You can still put ( L - pos ) bytes in the buffer ( pos + V ) > L & ( pos + V ) <= C : 0 L C +------------+------+ |XXXXXXXX:...| | +------------+------+ ^ ^ ^ | | | pos newlimit newCapacity You can now put ( L - pos + V ) bytes in the buffer. ( pos + V ) > C 0 L C +-------------------+----+ |XXXXXXXX:..........:....| +------------------------+ ^ ^ | | pos +-- newlimit | +-- newCapacity You can now put ( L - pos + V ) bytes in the buffer, which limit is now equals to the capacity.Note that the expecting remaining bytes starts at the current position. In all those examples, the position is 0. -
getObject
Reads a Java object from the buffer using the contextClassLoaderof the current thread.- Specified by:
getObjectin classIoBuffer- Returns:
- The read Object
- Throws:
ClassNotFoundException- thrown when we can't find the Class to use
-
getObject
Reads a Java object from the buffer using the specifiedclassLoader.- Specified by:
getObjectin classIoBuffer- Parameters:
classLoader- The classLoader to use to read an Object from the IoBuffer- Returns:
- The read Object
- Throws:
ClassNotFoundException- thrown when we can't find the Class to use
-
putObject
-
asInputStream
- Specified by:
asInputStreamin classIoBuffer- Returns:
- an
InputStreamthat reads the data from this buffer.InputStream.read()returns-1if the buffer position reaches to the limit.
-
asOutputStream
- Specified by:
asOutputStreamin classIoBuffer- Returns:
- an
OutputStreamthat appends the data into this buffer. Please note that theOutputStream.write(int)will throw aBufferOverflowExceptioninstead of anIOExceptionin case of buffer overflow. Please setautoExpandproperty by callingIoBuffer.setAutoExpand(boolean)to prevent the unexpected runtime exception.
-
duplicate
-
slice
-
asReadOnlyBuffer
- Specified by:
asReadOnlyBufferin classIoBuffer- Returns:
- the modified IoBuffer
- See Also:
-
array
-
arrayOffset
public int arrayOffset()- Specified by:
arrayOffsetin classIoBuffer- Returns:
- The offset in the returned byte[] when the
IoBuffer.array()method is called - See Also:
-
minimumCapacity
public int minimumCapacity()- Specified by:
minimumCapacityin classIoBuffer- Returns:
- the minimum capacity of this buffer which is used to determine the
new capacity of the buffer shrunk by the
IoBuffer.compact()andIoBuffer.shrink()operation. The default value is the initial capacity of the buffer.
-
minimumCapacity
Sets the minimum capacity of this buffer which is used to determine the new capacity of the buffer shrunk byIoBuffer.compact()andIoBuffer.shrink()operation. The default value is the initial capacity of the buffer.- Specified by:
minimumCapacityin classIoBuffer- Parameters:
minimumCapacity- the wanted minimum capacity- Returns:
- the underlying NIO
ByteBufferinstance.
-
capacity
Increases the capacity of this buffer. If the new capacity is less than or equal to the current capacity, this method returns the original buffer. If the new capacity is greater than the current capacity, the buffer is reallocated while retaining the position, limit, mark and the content of the buffer.
Note that the IoBuffer is replaced, it's not copied.
Assuming a buffer contains N bytes, its position is 0 and its current capacity is C, here are the resulting buffer if we set the new capacity to a value V < C and V > C :Initial buffer : 0 L C +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ | | | pos limit capacity V <= C : 0 L C +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ | | | pos limit newCapacity V > C : 0 L C V +--------+-----------------------+ |XXXXXXXX| : | +--------+-----------------------+ ^ ^ ^ ^ | | | | pos limit oldCapacity newCapacity The buffer has been increased.
- Specified by:
capacityin classIoBuffer- Parameters:
newCapacity- the wanted capacity- Returns:
- the underlying NIO
ByteBufferinstance.
-
isReadOnly
public boolean isReadOnly()- Specified by:
isReadOnlyin classIoBuffer- Returns:
trueif the buffer is readOnly- See Also:
-
markValue
-
hasArray
public boolean hasArray()- Specified by:
hasArrayin classIoBuffer- Returns:
trueif theIoBuffer.array()method will return a byte[]- See Also:
-
free
public void free()Declares this buffer and all its derived buffers are not used anymore so that it can be reused by someIoBufferAllocatorimplementations. It is not mandatory to call this method, but you might want to invoke this method for maximum performance. -
isDerived
public boolean isDerived()- Specified by:
isDerivedin classIoBuffer- Returns:
trueif and only if this buffer is derived from another buffer via one of theIoBuffer.duplicate(),IoBuffer.slice()orIoBuffer.asReadOnlyBuffer()methods.
-
isAutoShrink
public boolean isAutoShrink()- Specified by:
isAutoShrinkin classIoBuffer- Returns:
trueif and only ifautoShrinkis turned on.
-
setAutoShrink
Turns on or offautoShrink.- Specified by:
setAutoShrinkin classIoBuffer- Parameters:
autoShrink- The flag value to set- Returns:
- The modified IoBuffer instance
-
shrink
Changes the capacity of this buffer so this buffer occupies as less memory as possible while retaining the position, limit and the buffer content between the position and limit.
The capacity of the buffer never becomes less thanIoBuffer.minimumCapacity()
. The mark is discarded once the capacity changes.
Typically, a call to this method tries to remove as much unused bytes as possible, dividing by two the initial capacity until it can't without obtaining a new capacity lower than theIoBuffer.minimumCapacity(). For instance, if the limit is 7 and the capacity is 36, with a minimum capacity of 8, shrinking the buffer will left a capacity of 9 (we go down from 36 to 18, then from 18 to 9).Initial buffer : +--------+----------+ |XXXXXXXX| | +--------+----------+ ^ ^ ^ ^ | | | | pos | | capacity | | | +-- minimumCapacity | +-- limit Resulting buffer : +--------+--+-+ |XXXXXXXX| | | +--------+--+-+ ^ ^ ^ ^ | | | | | | | +-- new capacity | | | pos | +-- minimum capacity | +-- limit -
getMediumInt
public int getMediumInt()Relative get method for reading a medium int value.Reads the next three bytes at this buffer's current position, composing them into an int value according to the current byte order, and then increments the position by three.
- Specified by:
getMediumIntin classIoBuffer- Returns:
- The medium int value at the buffer's current position
-
getUnsignedMediumInt
public int getUnsignedMediumInt()Relative get method for reading an unsigned medium int value.Reads the next three bytes at this buffer's current position, composing them into an int value according to the current byte order, and then increments the position by three.
- Specified by:
getUnsignedMediumIntin classIoBuffer- Returns:
- The unsigned medium int value at the buffer's current position
-
getMediumInt
public int getMediumInt(int index) Absolute get method for reading a medium int value.Reads the next three bytes at this buffer's current position, composing them into an int value according to the current byte order.
- Specified by:
getMediumIntin classIoBuffer- Parameters:
index- The index from which the medium int will be read- Returns:
- The medium int value at the given index
-
getUnsignedMediumInt
public int getUnsignedMediumInt(int index) Absolute get method for reading an unsigned medium int value.Reads the next three bytes at this buffer's current position, composing them into an int value according to the current byte order.
- Specified by:
getUnsignedMediumIntin classIoBuffer- Parameters:
index- The index from which the unsigned medium int will be read- Returns:
- The unsigned medium int value at the given index
-
putMediumInt
Relative put method for writing a medium int value.Writes three bytes containing the given int value, in the current byte order, into this buffer at the current position, and then increments the position by three.
- Specified by:
putMediumIntin classIoBuffer- Parameters:
value- The medium int value to be written- Returns:
- the modified IoBuffer
-
putMediumInt
Absolute put method for writing a medium int value.Writes three bytes containing the given int value, in the current byte order, into this buffer at the given index.
- Specified by:
putMediumIntin classIoBuffer- Parameters:
index- The index at which the bytes will be writtenvalue- The medium int value to be written- Returns:
- the modified IoBuffer
-
prefixedDataAvailable
public boolean prefixedDataAvailable(int prefixLength) - Specified by:
prefixedDataAvailablein classIoBuffer- Parameters:
prefixLength- the length of the prefix field (1, 2, or 4)- Returns:
trueif this buffer contains a data which has a data length as a prefix and the buffer has remaining data as enough as specified in the data length field. This method is identical withprefixedDataAvailable( prefixLength, Integer.MAX_VALUE ). Please not that using this method can allow DoS (Denial of Service) attack in case the remote peer sends too big data length value. It is recommended to useIoBuffer.prefixedDataAvailable(int, int)instead.
-
prefixedDataAvailable
public boolean prefixedDataAvailable(int prefixLength, int maxDataLength) - Specified by:
prefixedDataAvailablein classIoBuffer- Parameters:
prefixLength- the length of the prefix field (1, 2, or 4)maxDataLength- the allowed maximum of the read data length- Returns:
trueif this buffer contains a data which has a data length as a prefix and the buffer has remaining data as enough as specified in the data length field.
-
indexOf
-
getEnum
Reads a byte from the buffer and returns the correlating enum constant defined by the specified enum type. -
getEnum
Reads a byte from the buffer and returns the correlating enum constant defined by the specified enum type. -
getEnumShort
Reads a short from the buffer and returns the correlating enum constant defined by the specified enum type.- Specified by:
getEnumShortin classIoBuffer- Type Parameters:
E- The enum type to return- Parameters:
enumClass- The enum's class object- Returns:
- The correlated enum constant
-
getEnumShort
Reads a short from the buffer and returns the correlating enum constant defined by the specified enum type.- Specified by:
getEnumShortin classIoBuffer- Type Parameters:
E- The enum type to return- Parameters:
index- the index from which the bytes will be readenumClass- The enum's class object- Returns:
- The correlated enum constant
-
getEnumInt
Reads an int from the buffer and returns the correlating enum constant defined by the specified enum type.- Specified by:
getEnumIntin classIoBuffer- Type Parameters:
E- The enum type to return- Parameters:
enumClass- The enum's class object- Returns:
- The correlated enum constant
-
getEnumInt
Reads an int from the buffer and returns the correlating enum constant defined by the specified enum type.- Specified by:
getEnumIntin classIoBuffer- Type Parameters:
E- The enum type to return- Parameters:
index- the index from which the bytes will be readenumClass- The enum's class object- Returns:
- The correlated enum constant
-
putEnum
-
putEnum
-
putEnumShort
Writes an enum's ordinal value to the buffer as a short.- Specified by:
putEnumShortin classIoBuffer- Parameters:
e- The enum to write to the buffer- Returns:
- The modified IoBuffer
-
putEnumShort
Description copied from class:IoBufferWrites an enum's ordinal value to the buffer as a short.- Specified by:
putEnumShortin classIoBuffer- Parameters:
index- The index at which the bytes will be writtene- The enum to write to the buffer- Returns:
- The modified IoBuffer
-
putEnumInt
Writes an enum's ordinal value to the buffer as an integer.- Specified by:
putEnumIntin classIoBuffer- Parameters:
e- The enum to write to the buffer- Returns:
- The modified IoBuffer
-
putEnumInt
Writes an enum's ordinal value to the buffer as an integer.- Specified by:
putEnumIntin classIoBuffer- Parameters:
index- The index at which the bytes will be writtene- The enum to write to the buffer- Returns:
- The modified IoBuffer
-
getEnumSet
Reads a byte sized bit vector and converts it to anEnumSet.Each bit is mapped to a value in the specified enum. The least significant bit maps to the first entry in the specified enum and each subsequent bit maps to each subsequent bit as mapped to the subsequent enum value.
- Specified by:
getEnumSetin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
enumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
-
getEnumSet
Reads a byte sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
index- the index from which the byte will be readenumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
getEnumSetShort
Reads a short sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetShortin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
enumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
getEnumSetShort
Reads a short sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetShortin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
index- the index from which the bytes will be readenumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
getEnumSetInt
Reads an int sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetIntin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
enumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
getEnumSetInt
Reads an int sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetIntin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
index- the index from which the bytes will be readenumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
getEnumSetLong
Reads a long sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetLongin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
enumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
getEnumSetLong
Reads a long sized bit vector and converts it to anEnumSet.- Specified by:
getEnumSetLongin classIoBuffer- Type Parameters:
E- the enum type- Parameters:
index- the index from which the bytes will be readenumClass- the enum class used to create the EnumSet- Returns:
- the EnumSet representation of the bit vector
- See Also:
-
putEnumSet
-
putEnumSet
Writes the specifiedSetto the buffer as a byte sized bit vector.- Specified by:
putEnumSetin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
index- the index at which the byte will be writtenset- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putEnumSetShort
Writes the specifiedSetto the buffer as a short sized bit vector.- Specified by:
putEnumSetShortin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
set- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putEnumSetShort
Writes the specifiedSetto the buffer as a short sized bit vector.- Specified by:
putEnumSetShortin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
index- the index at which the bytes will be writtenset- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putEnumSetInt
Writes the specifiedSetto the buffer as an int sized bit vector.- Specified by:
putEnumSetIntin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
set- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putEnumSetInt
Writes the specifiedSetto the buffer as an int sized bit vector.- Specified by:
putEnumSetIntin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
index- the index at which the bytes will be writtenset- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putEnumSetLong
Writes the specifiedSetto the buffer as a long sized bit vector.- Specified by:
putEnumSetLongin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
set- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putEnumSetLong
Writes the specifiedSetto the buffer as a long sized bit vector.- Specified by:
putEnumSetLongin classIoBuffer- Type Parameters:
E- the enum type of the Set- Parameters:
index- the index at which the bytes will be writtenset- the enum set to write to the buffer- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer- Specified by:
putUnsignedin classIoBuffer- Parameters:
value- the byte to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer at a specified position- Specified by:
putUnsignedin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the byte to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer- Specified by:
putUnsignedin classIoBuffer- Parameters:
value- the short to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer at a specified position- Specified by:
putUnsignedin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the short to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer- Specified by:
putUnsignedin classIoBuffer- Parameters:
value- the int to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer at a specified position- Specified by:
putUnsignedin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the int to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer- Specified by:
putUnsignedin classIoBuffer- Parameters:
value- the long to write- Returns:
- the modified IoBuffer
-
putUnsigned
Writes an unsigned byte into the ByteBuffer at a specified position- Specified by:
putUnsignedin classIoBuffer- Parameters:
index- the position in the buffer to write the valuevalue- the long to write- Returns:
- the modified IoBuffer
-