public interface DataBuffer
DataBuffer
s has a separate read and
write position, as opposed to ByteBuffer
's single
position. As such, the DataBuffer
does not require
a flip to read after writing. In general, the following invariant
holds for the read and write positions, and the capacity:
0 <= readPosition <= writePosition <= capacity
The capacity of a DataBuffer
is expanded on demand,
similar to StringBuilder
.
The main purpose of the DataBuffer
abstraction is to provide a convenient wrapper
around ByteBuffer
that is similar to Netty's io.netty.buffer.ByteBuf
, but that
can also be used on non-Netty platforms (i.e. Servlet).
DataBufferFactory
Modifier and Type | Method and Description |
---|---|
java.nio.ByteBuffer |
asByteBuffer()
Expose this buffer's bytes as a
ByteBuffer . |
java.nio.ByteBuffer |
asByteBuffer(int index,
int length)
Expose a subsequence of this buffer's bytes as a
ByteBuffer . |
java.io.InputStream |
asInputStream()
Expose this buffer's data as an
InputStream . |
java.io.InputStream |
asInputStream(boolean releaseOnClose)
Expose this buffer's data as an
InputStream . |
java.io.OutputStream |
asOutputStream()
Expose this buffer's data as an
OutputStream . |
int |
capacity()
Return the number of bytes that this buffer can contain.
|
DataBuffer |
capacity(int capacity)
Sets the number of bytes that this buffer can contain.
|
DataBufferFactory |
factory()
Return the
DataBufferFactory that created this buffer. |
byte |
getByte(int index)
Read a single byte at the given index from this data buffer.
|
int |
indexOf(java.util.function.IntPredicate predicate,
int fromIndex)
Return the index of the first byte in this buffer that matches the given
predicate.
|
int |
lastIndexOf(java.util.function.IntPredicate predicate,
int fromIndex)
Return the index of the last byte in this buffer that matches the given
predicate.
|
byte |
read()
Read a single byte from the current reading position from this data buffer.
|
DataBuffer |
read(byte[] destination)
Read this buffer's data into the specified destination, starting at the current
reading position of this buffer.
|
DataBuffer |
read(byte[] destination,
int offset,
int length)
Read at most
length bytes of this buffer into the specified destination,
starting at the current reading position of this buffer. |
int |
readableByteCount()
Return the number of bytes that can be read from this data buffer.
|
int |
readPosition()
Return the position from which this buffer will read.
|
DataBuffer |
readPosition(int readPosition)
Set the position from which this buffer will read.
|
DataBuffer |
slice(int index,
int length)
Create a new
DataBuffer whose contents is a shared subsequence of this
data buffer's content. |
int |
writableByteCount()
Return the number of bytes that can be written to this data buffer.
|
DataBuffer |
write(byte b)
Write a single byte into this buffer at the current writing position.
|
DataBuffer |
write(byte[] source)
Write the given source into this buffer, startin at the current writing position
of this buffer.
|
DataBuffer |
write(byte[] source,
int offset,
int length)
Write at most
length bytes of the given source into this buffer, starting
at the current writing position of this buffer. |
DataBuffer |
write(java.nio.ByteBuffer... buffers)
Write one or more
ByteBuffer to this buffer, starting at the current
writing position. |
DataBuffer |
write(DataBuffer... buffers)
Write one or more
DataBuffer s to this buffer, starting at the current
writing position. |
int |
writePosition()
Return the position to which this buffer will write.
|
DataBuffer |
writePosition(int writePosition)
Set the position to which this buffer will write.
|
DataBufferFactory factory()
DataBufferFactory
that created this buffer.int indexOf(java.util.function.IntPredicate predicate, int fromIndex)
predicate
- the predicate to matchfromIndex
- the index to start the search frompredicate
; or -1
if none matchint lastIndexOf(java.util.function.IntPredicate predicate, int fromIndex)
predicate
- the predicate to matchfromIndex
- the index to start the search frompredicate
; or -1
if none matchint readableByteCount()
int writableByteCount()
int capacity()
DataBuffer capacity(int capacity)
capacity
- the new capacityint readPosition()
DataBuffer readPosition(int readPosition)
readPosition
- the new read positionjava.lang.IndexOutOfBoundsException
- if readPosition
is smaller than 0 or greater than
writePosition()
int writePosition()
DataBuffer writePosition(int writePosition)
writePosition
- the new write positionjava.lang.IndexOutOfBoundsException
- if writePosition
is smaller than
readPosition()
or greater than capacity()
byte getByte(int index)
index
- the index at which the byte will be readjava.lang.IndexOutOfBoundsException
- when index
is out of boundsbyte read()
DataBuffer read(byte[] destination)
destination
- the array into which the bytes are to be writtenDataBuffer read(byte[] destination, int offset, int length)
length
bytes of this buffer into the specified destination,
starting at the current reading position of this buffer.destination
- the array into which the bytes are to be writtenoffset
- the index within destination
of the first byte to be writtenlength
- the maximum number of bytes to be written in destination
DataBuffer write(byte b)
b
- the byte to be writtenDataBuffer write(byte[] source)
source
- the bytes to be written into this bufferDataBuffer write(byte[] source, int offset, int length)
length
bytes of the given source into this buffer, starting
at the current writing position of this buffer.source
- the bytes to be written into this bufferoffset
- the index withing source
to start writing fromlength
- the maximum number of bytes to be written from source
DataBuffer write(DataBuffer... buffers)
DataBuffer
s to this buffer, starting at the current
writing position. It is the responsibility of the caller to
release the given data buffers.buffers
- the byte buffers to write into this bufferDataBuffer write(java.nio.ByteBuffer... buffers)
ByteBuffer
to this buffer, starting at the current
writing position.buffers
- the byte buffers to write into this bufferDataBuffer slice(int index, int length)
DataBuffer
whose contents is a shared subsequence of this
data buffer's content. Data between this data buffer and the returned buffer is
shared; though changes in the returned buffer's position will not be reflected
in the reading nor writing position of this data buffer.index
- the index at which to start the slicelength
- the length of the slicejava.nio.ByteBuffer asByteBuffer()
ByteBuffer
. Data between this
DataBuffer
and the returned ByteBuffer
is shared; though
changes in the returned buffer's position
will not be reflected in the reading nor writing position of this data buffer.java.nio.ByteBuffer asByteBuffer(int index, int length)
ByteBuffer
. Data between this
DataBuffer
and the returned ByteBuffer
is shared; though
changes in the returned buffer's position
will not be reflected in the reading nor writing position of this data buffer.index
- the index at which to start the byte bufferlength
- the length of the returned byte bufferjava.io.InputStream asInputStream()
InputStream
. Both data and read position are
shared between the returned stream and this data buffer. The underlying buffer will
not be released when the
input stream is closed.asInputStream(boolean)
java.io.InputStream asInputStream(boolean releaseOnClose)
InputStream
. Both data and read position are
shared between the returned stream and this data buffer.releaseOnClose
- whether the underlying buffer will be
released when the input stream is
closed.java.io.OutputStream asOutputStream()
OutputStream
. Both data and write position are
shared between the returned stream and this data buffer.