public interface Buffer extends Cloneable
| Modifier and Type | Method and Description |
|---|---|
int |
capacity()
The capacity of this buffer.
|
Buffer |
clone()
Performs a deep clone of this object.
|
String |
dumpAsHex()
Dump the content of this buffer as a hex dump ala Wireshark.
|
boolean |
equals(Object b)
Check whether to buffers are considered to be equal.
|
boolean |
equalsIgnoreCase(Object b) |
byte[] |
getArray()
Get the backing array.
|
default boolean |
getBit(int byteIndex,
int bitNo)
Check whether a particular bit within a byte is on or off.
|
default boolean |
getBit0(int index) |
default boolean |
getBit1(int index) |
default boolean |
getBit2(int index) |
default boolean |
getBit3(int index) |
default boolean |
getBit4(int index) |
default boolean |
getBit5(int index) |
default boolean |
getBit6(int index) |
default boolean |
getBit7(int index) |
default void |
getByes(byte[] dst)
Deprecated.
Please use
getBytes(byte[]) instead |
byte |
getByte(int index)
Get the byte at the index.
|
void |
getBytes(Buffer dst)
Same as calling
getBytes(int, Buffer) where the index is
getReaderIndex(). |
void |
getBytes(byte[] dst) |
void |
getBytes(int index,
Buffer dst)
Transfer this buffer's data to the destination buffer.
|
int |
getInt(int index)
Get a 32-bit integer at the specified absolute index.
|
int |
getLowerBoundary()
If you access the
getRawArray() you will get just that. |
default byte[] |
getRawArray() |
int |
getReadableBytes()
Returns the number of available bytes for reading without blocking.
|
int |
getReaderIndex()
The reader index
|
short |
getShort(int index) |
short |
getUnsignedByte(int index) |
long |
getUnsignedInt(int index) |
int |
getUnsignedShort(int index) |
int |
getUpperBoundary()
See explanation in
getLowerBoundary() since this is the same, just
the upper limit of that raw array. |
int |
getWritableBytes()
Get the number of writable bytes.
|
int |
getWriterIndex()
The writer index.
|
int |
hashCode() |
boolean |
hasReadableBytes()
Checks whether this buffer has any bytes available for reading without
blocking.
|
boolean |
hasWritableBytes()
Checks whether this
Buffer has any space left for writing. |
boolean |
hasWriteSupport()
Check whether this
Buffer has write support or not. |
int |
indexOf(byte b) |
int |
indexOf(int maxBytes,
byte... bytes)
Same as
readUntil(int, byte...) but instead of returning the
buffer with everything up until the specified byte it returns the index
instead. |
boolean |
isEmpty()
Check whether this buffer is empty or not.
|
void |
markReaderIndex()
Mark the current position of the reader index.
|
int |
parseToInt()
Parse all the readable bytes in this buffer as a unsigned integer value.
|
int |
parseToInt(int radix)
Convert the entire buffer to a signed integer value
|
byte |
peekByte()
Peak a head to see what the next byte is.
|
byte |
readByte()
Read the next byte, which will also increase the readerIndex by one.
|
Buffer |
readBytes(int length)
Read the requested number of bytes and increase the readerIndex with the
corresponding number of bytes.
|
int |
readInt()
Read an int and will increase the reader index of this buffer by 4
|
Buffer |
readLine()
Reads a line, i.e., it reads until we hit a line feed ('\n') or a
carriage return ('\r'), or a carriage return followed immediately by a
line feed.
|
short |
readShort() |
short |
readUnsignedByte() |
long |
readUnsignedInt()
Read an unsigned int and will increase the reader index of this buffer by
4
|
int |
readUnsignedShort() |
Buffer |
readUntil(byte b)
Same as
#readUntil(4096, 'b')
Read until the specified byte is encountered and return a buffer
representing that section of the buffer. |
Buffer |
readUntil(int maxBytes,
byte... bytes)
Read until any of the specified bytes have been encountered or until we
have read a maximum amount of bytes.
|
Buffer |
readUntilDoubleCRLF()
Read until we find a double CRLF.
|
Buffer |
readUntilSafe(int maxBytes,
byte... bytes)
Same as
readUntil(int, byte...) but will return null instead of
throwing a ByteNotFoundException |
Buffer |
readUntilSingleCRLF()
Read until we find a single CRLF.
|
void |
resetReaderIndex()
Reset the reader index to the marked position or to the beginning of the
buffer if mark hasn't explicitly been called.
|
void |
setByte(int index,
byte value)
Set the byte at given index to a new value
|
void |
setInt(int index,
int value) |
void |
setReaderIndex(int index) |
void |
setUnsignedByte(int index,
short value) |
void |
setUnsignedInt(int index,
long value) |
void |
setUnsignedShort(int index,
int value) |
void |
setWriterIndex(int index) |
Buffer |
slice()
Slice off the rest of the buffer.
|
Buffer |
slice(int stop)
Same as
#slice(Buffer.getReaderIndex(), int) |
Buffer |
slice(int start,
int stop)
Get a slice of the buffer starting at
start (inclusive)
ending at stop (exclusive). |
String |
toString() |
static long |
unsignedInt(byte a,
byte b,
byte c,
byte d)
Helper method to "parse" out a unsigned int from the given 4 bytes.
|
void |
write(byte b)
Write a byte to where the current writer index is pointing.
|
void |
write(byte[] bytes) |
void |
write(int value) |
void |
write(long value) |
void |
write(String s)
Same as
write(String, String) where the charset is set to
"UTF-8" |
void |
write(String s,
String charset)
Write a string to this buffer using the specified charset to convert the String into bytes.
|
void |
writeAsString(int value)
Write the integer value to this
Buffer as a String. |
void |
writeAsString(long value)
Write the long value to this
Buffer as a String. |
static long unsignedInt(byte a,
byte b,
byte c,
byte d)
a - b - c - d - void getBytes(Buffer dst)
getBytes(int, Buffer) where the index is
getReaderIndex().dst - IndexOutOfBoundsExceptionvoid getBytes(int index,
Buffer dst)
throws IndexOutOfBoundsException
readerIndex or the writerIndex
of the src buffer (i.e. this) but will increase the
writerIndex of the destination buffer.index - dst - IndexOutOfBoundsException - in case index < 0void getBytes(byte[] dst)
throws IndexOutOfBoundsException
IndexOutOfBoundsException@Deprecated default void getByes(byte[] dst) throws IndexOutOfBoundsException
getBytes(byte[]) insteadIndexOutOfBoundsExceptiongetBytes(byte[])Buffer readBytes(int length) throws IndexOutOfBoundsException, IOException
length - IndexOutOfBoundsExceptionIOExceptionBuffer readLine() throws IOException
IOExceptionBuffer readUntilSingleCRLF() throws IOException
readLine() but the
readLine doesn't enforce the CRLF being present, which is typical for
e.g. SIP and is important when reading bytes being streamed over e.g.
a network connectionIOExceptionBuffer readUntilDoubleCRLF() throws IOException
IOExceptionint getReadableBytes()
InputStream may be able to read more off the stream,
however, it may not be able to do so without blocking.boolean hasReadableBytes()
getReadableBytes() > 0boolean isEmpty()
!hasReadableBytes()byte[] getArray()
default byte[] getRawArray()
default boolean getBit(int byteIndex,
int bitNo)
throws IllegalArgumentException
byteIndex - the index of the byte we are going to check.bitNo - the bit no, which is zero indexed and of course needs to be within 0 to 7.IllegalArgumentException - in case the bit number is not between 0-7 (inclusive).default boolean getBit0(int index)
default boolean getBit1(int index)
default boolean getBit2(int index)
default boolean getBit3(int index)
default boolean getBit4(int index)
default boolean getBit5(int index)
default boolean getBit6(int index)
default boolean getBit7(int index)
Buffer readUntil(byte b) throws IOException, ByteNotFoundException
#readUntil(4096, 'b')
Read until the specified byte is encountered and return a buffer
representing that section of the buffer.
If the byte isn't found, then a ByteNotFoundException is thrown
and the getReaderIndex() is left where we bailed out.
Note, the byte we are looking for will have been consumed so whatever
that is left in the Buffer will not contain that byte.
Example:
Buffer buffer = Buffers.wrap("hello world");
Buffer hello = buffer.readUntil((byte)' ');
System.out.println(hello); // will contain "hello"
System.out.println(buffer); // will contain "world"
As the example above illustrates, we are looking for a space, which is
found between "hello" and "world". Since the space will be consumed, the
original buffer will now only contain "world" and not " world".b - the byte to look forByteNotFoundException - in case the byte we were looking for is not found.IOExceptionBuffer readUntil(int maxBytes, byte... bytes) throws IOException, ByteNotFoundException, IllegalArgumentException
readUntil(byte) except it allows you to look for multiple bytes
and to specify for how many bytes we should be looking before we give up.
Example, we want to read until we either findmaxBytes - the maximum number of bytes we would like to read before
giving up.bytes - the bytes we are looking for (either one of them)IOExceptionByteNotFoundException - in case none of the bytes we were looking for are found
within the specified maximum number of bytes.IllegalArgumentException - in no bytes to look for is specified.Buffer readUntilSafe(int maxBytes, byte... bytes) throws IOException, IllegalArgumentException
readUntil(int, byte...) but will return null instead of
throwing a ByteNotFoundExceptionmaxBytes - bytes - IOExceptionIllegalArgumentExceptionint indexOf(int maxBytes,
byte... bytes)
throws IOException,
ByteNotFoundException,
IllegalArgumentException
readUntil(int, byte...) but instead of returning the
buffer with everything up until the specified byte it returns the index
instead.
NOTE. The index is representing where in the Buffer you can find
the byte and the index is in relation to the entire Buffer and
its capacity so even if you have already read x bytes, it would not
change the index of what you search for.
Example:maxBytes - the maximum number of bytes we would like to read before
giving up.bytes - the bytes we are looking for (either one of them)IOExceptionByteNotFoundException - will ONLY be thrown if we haven't found the byte within the
maxBytes limit. If the buffer we are searching in is less
than maxBytes and we can't find what we are looking for then
negative one will be returned instead.IllegalArgumentExceptionint indexOf(byte b)
throws IOException,
ByteNotFoundException,
IllegalArgumentException
b - IOExceptionByteNotFoundExceptionIllegalArgumentExceptionBuffer slice(int start, int stop)
start (inclusive)
ending at stop (exclusive). Hence, the new capacity of the
buffer is stop - startBuffer slice(int stop)
#slice(Buffer.getReaderIndex(), int)stop - Buffer slice()
#slice(Buffer.getReaderIndex(), buffer.getCapacity())
Note, if you slice an empty buffer you will get back another empty
buffer. Same goes for when you slice a buffer whose bytes already have
been consumed.int getLowerBoundary()
getRawArray() you will get just that. The raw
un-guarded array, which may be useful but should be used with care since you
now can do whatever you want with the data. However, if you do so and also
want to know which 'slice' of that array this buffer is seeing, then you
need to know the lower boundary as well since the array can e.g be 1k long
but the data seen by this buffer starts at index 200.int getUpperBoundary()
getLowerBoundary() since this is the same, just
the upper limit of that raw array.int getReaderIndex()
void setReaderIndex(int index)
void markReaderIndex()
#reset()void resetReaderIndex()
int capacity()
byte getByte(int index)
throws IndexOutOfBoundsException,
IOException
InputStreamBuffer gets its bytes off of a InputStream so
let's say you have read 10 bytes off of the stream already but ask to
access the byte at index 20, we will try and ready an additional 10 bytes
from the InputStream so we can return the byte at index 20.index - IndexOutOfBoundsException - in case the index is greater than the capacity of this bufferIOExceptionbyte readByte()
throws IndexOutOfBoundsException,
IOException
IndexOutOfBoundsException - in case there is nothing left to readIOExceptionbyte peekByte()
throws IndexOutOfBoundsException,
IOException
IndexOutOfBoundsException - in case there is nothing left to readIOExceptionlong readUnsignedInt()
throws IndexOutOfBoundsException
IndexOutOfBoundsException - in case there is not 4 bytes left to readint readInt()
throws IndexOutOfBoundsException
IndexOutOfBoundsException - in case there is not 4 bytes left to readint getInt(int index)
throws IndexOutOfBoundsException
index - IndexOutOfBoundsException - in case there is not 4 bytes left to readvoid setInt(int index,
int value)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionvoid setUnsignedInt(int index,
long value)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionshort getShort(int index)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionint readUnsignedShort()
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionint getUnsignedShort(int index)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionvoid setUnsignedShort(int index,
int value)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionshort readShort()
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionshort readUnsignedByte()
throws IndexOutOfBoundsException,
IOException
IndexOutOfBoundsExceptionIOExceptionlong getUnsignedInt(int index)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionshort getUnsignedByte(int index)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionvoid setUnsignedByte(int index,
short value)
throws IndexOutOfBoundsException
IndexOutOfBoundsExceptionint parseToInt()
throws NumberFormatException,
IOException
NumberFormatException - in case the bytes in the buffer cannot be converted into an
integer value.IOException - in case anything goes wrong when reading from the underlyingint parseToInt(int radix)
throws NumberFormatException,
IOException
radix - NumberFormatExceptionIOExceptionString dumpAsHex()
Buffer clone()
void setByte(int index,
byte value)
throws IndexOutOfBoundsException
index - the indexvalue - the valueIndexOutOfBoundsExceptionint getWriterIndex()
void setWriterIndex(int index)
int getWritableBytes()
boolean hasWritableBytes()
Buffer has any space left for writing. Same
as getWritableBytes() > 0boolean hasWriteSupport()
Buffer has write support or not. There are
buffers that do not allow you to write to them (such as the
EmptyBuffer) so if you try and write to such a buffer it will
throw a WriteNotSupportedException.void write(byte b)
throws IndexOutOfBoundsException,
WriteNotSupportedException
WriteNotSupportedExceptionb - IndexOutOfBoundsException - in case there is no more space to write to (which includes
those cases where the underlying implementation does not
support writing)WriteNotSupportedException - in case the underlying implementation does not support
writes.void write(byte[] bytes)
throws IndexOutOfBoundsException,
WriteNotSupportedException
void write(int value)
throws IndexOutOfBoundsException,
WriteNotSupportedException
void write(long value)
throws IndexOutOfBoundsException,
WriteNotSupportedException
void write(String s) throws IndexOutOfBoundsException, WriteNotSupportedException, UnsupportedEncodingException
write(String, String) where the charset is set to
"UTF-8"s - IndexOutOfBoundsException - in case we cannot write entire String to this Buffer.WriteNotSupportedException - in case the underlying implementation does not support
writes.UnsupportedEncodingException - in case the charset "UTF-8" is not supported by the platform.void writeAsString(int value)
throws IndexOutOfBoundsException,
WriteNotSupportedException
Buffer as a String.value - the value that will be converted to a String before being
written to this Buffer.IndexOutOfBoundsExceptionWriteNotSupportedExceptionvoid writeAsString(long value)
throws IndexOutOfBoundsException,
WriteNotSupportedException
Buffer as a String.value - the value that will be converted to a String before being written to this
Buffer.IndexOutOfBoundsExceptionWriteNotSupportedExceptionvoid write(String s, String charset) throws IndexOutOfBoundsException, WriteNotSupportedException, UnsupportedEncodingException
writerInxex of this buffer will be increased with the corresponding number
of bytes.
Note, either the entire string is written to this buffer or if it doesn't fit then nothing is
written to this buffer.s - charset - IndexOutOfBoundsException - in case we cannot write entire String to this
Buffer.WriteNotSupportedExceptionUnsupportedEncodingException - in case the specified charset is not supportedboolean equals(Object b)
boolean equalsIgnoreCase(Object b)
Copyright © 2021. All Rights Reserved.