Package io.grpc.netty
Class NettyReadableBuffer
java.lang.Object
io.grpc.internal.AbstractReadableBuffer
io.grpc.netty.NettyReadableBuffer
- All Implemented Interfaces:
ReadableBuffer
,Closeable
,AutoCloseable
A
Buffer
implementation that is backed by a Netty ByteBuf
. This class
does not call ByteBuf.retain(int)
, so if that is needed it should be called prior to creating
this buffer.-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
array()
Gets the backing array for this buffer.int
Gets the offset in the backing array of the current read position.(package private) io.netty.buffer.ByteBuf
buffer()
boolean
Indicates whether or notReadableBuffer.getByteBuffer()
operation is supported for this buffer.void
close()
If the first call to close, callsReferenceCounted.release()
to release the internal Netty buffer.Gets aByteBuffer
that contains some bytes of the content next to be read, ornull
if this buffer has been exhausted.boolean
hasArray()
Indicates whether or not this buffer exposes a backing array.void
mark()
Marks the current position in this buffer.boolean
Indicates whether or notReadableBuffer.mark()
operation is supported for this buffer.int
Gets the current number of readable bytes remaining in this buffer.void
readBytes
(byte[] dest, int index, int length) Readslength
bytes from this buffer and writes them to the destination array.readBytes
(int length) Readslength
bytes from this buffer and returns a new Buffer containing them.void
readBytes
(OutputStream dest, int length) Readslength
bytes from this buffer and writes them to the destination stream.void
readBytes
(ByteBuffer dest) Reads from this buffer until the destination's position reaches its limit, and increases the read position by the number of the transferred bytes.int
Reads the next unsigned byte from this buffer and increments the read position by 1.void
reset()
Repositions this buffer to the position at the timeReadableBuffer.mark()
was last called on this buffer.void
skipBytes
(int length) Increments the read position by the given length.void
touch()
Note that the current callsite has access to this buffer, or do nothing.Methods inherited from class io.grpc.internal.AbstractReadableBuffer
checkReadable, readInt
-
Field Details
-
buffer
private final io.netty.buffer.ByteBuf buffer -
closed
private boolean closed
-
-
Constructor Details
-
NettyReadableBuffer
NettyReadableBuffer(io.netty.buffer.ByteBuf buffer)
-
-
Method Details
-
buffer
io.netty.buffer.ByteBuf buffer() -
readableBytes
public int readableBytes()Description copied from interface:ReadableBuffer
Gets the current number of readable bytes remaining in this buffer. -
skipBytes
public void skipBytes(int length) Description copied from interface:ReadableBuffer
Increments the read position by the given length. -
readUnsignedByte
public int readUnsignedByte()Description copied from interface:ReadableBuffer
Reads the next unsigned byte from this buffer and increments the read position by 1. -
readBytes
public void readBytes(byte[] dest, int index, int length) Description copied from interface:ReadableBuffer
Readslength
bytes from this buffer and writes them to the destination array. Increments the read position bylength
.- Parameters:
dest
- the destination array to receive the bytes.index
- the starting offset in the destination array.length
- the number of bytes to be copied.
-
readBytes
Description copied from interface:ReadableBuffer
Reads from this buffer until the destination's position reaches its limit, and increases the read position by the number of the transferred bytes.- Parameters:
dest
- the destination buffer to receive the bytes.
-
readBytes
Description copied from interface:ReadableBuffer
Readslength
bytes from this buffer and writes them to the destination stream. Increments the read position bylength
. If the required bytes are not readable, throwsIndexOutOfBoundsException
.- Parameters:
dest
- the destination stream to receive the bytes.length
- the number of bytes to be copied.
-
readBytes
Description copied from interface:ReadableBuffer
Readslength
bytes from this buffer and returns a new Buffer containing them. Some implementations may return a Buffer sharing the backing memory with this buffer to prevent copying. However, that means that the returned buffer may keep the (possibly much larger) backing memory in use even after this buffer is closed.- Parameters:
length
- the number of bytes to contain in returned Buffer.
-
hasArray
public boolean hasArray()Description copied from interface:ReadableBuffer
Indicates whether or not this buffer exposes a backing array.- Specified by:
hasArray
in interfaceReadableBuffer
- Overrides:
hasArray
in classAbstractReadableBuffer
-
array
public byte[] array()Description copied from interface:ReadableBuffer
Gets the backing array for this buffer. This is an optional method, so callers should first checkReadableBuffer.hasArray()
.- Specified by:
array
in interfaceReadableBuffer
- Overrides:
array
in classAbstractReadableBuffer
-
arrayOffset
public int arrayOffset()Description copied from interface:ReadableBuffer
Gets the offset in the backing array of the current read position. This is an optional method, so callers should first checkReadableBuffer.hasArray()
- Specified by:
arrayOffset
in interfaceReadableBuffer
- Overrides:
arrayOffset
in classAbstractReadableBuffer
-
touch
public void touch()Description copied from interface:ReadableBuffer
Note that the current callsite has access to this buffer, or do nothing. This is only useful when the buffer has leak detection and intrumentation to record usages before the buffer was leaked. That can make it much easier to track down where the buffer was leaked. If this isn't such a buffer, the method does nothing. -
markSupported
public boolean markSupported()Description copied from interface:ReadableBuffer
Indicates whether or notReadableBuffer.mark()
operation is supported for this buffer.- Specified by:
markSupported
in interfaceReadableBuffer
- Overrides:
markSupported
in classAbstractReadableBuffer
-
mark
public void mark()Description copied from interface:ReadableBuffer
Marks the current position in this buffer. A subsequent call to theReadableBuffer.reset()
method repositions this stream at the last marked position so that subsequent reads re-read the same bytes.- Specified by:
mark
in interfaceReadableBuffer
- Overrides:
mark
in classAbstractReadableBuffer
-
reset
public void reset()Description copied from interface:ReadableBuffer
Repositions this buffer to the position at the timeReadableBuffer.mark()
was last called on this buffer.- Specified by:
reset
in interfaceReadableBuffer
- Overrides:
reset
in classAbstractReadableBuffer
-
byteBufferSupported
public boolean byteBufferSupported()Description copied from interface:ReadableBuffer
Indicates whether or notReadableBuffer.getByteBuffer()
operation is supported for this buffer.- Specified by:
byteBufferSupported
in interfaceReadableBuffer
- Overrides:
byteBufferSupported
in classAbstractReadableBuffer
-
getByteBuffer
Description copied from interface:ReadableBuffer
Gets aByteBuffer
that contains some bytes of the content next to be read, ornull
if this buffer has been exhausted. The number of bytes contained in the returned buffer is implementation specific. The position of this buffer is unchanged after calling this method. The returned buffer's content should not be modified, but the position, limit, and mark may be changed. Operations for changing the position, limit, and mark of the returned buffer does not affect the position, limit, and mark of this buffer. Buffers returned by this method have independent position, limit and mark. This is an optional method, so callers should first checkReadableBuffer.byteBufferSupported()
.- Specified by:
getByteBuffer
in interfaceReadableBuffer
- Overrides:
getByteBuffer
in classAbstractReadableBuffer
-
close
public void close()If the first call to close, callsReferenceCounted.release()
to release the internal Netty buffer.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceReadableBuffer
- Overrides:
close
in classAbstractReadableBuffer
-