Package io.grpc.netty

Class NettyReadableBuffer

  • All Implemented Interfaces:
    ReadableBuffer, java.io.Closeable, java.lang.AutoCloseable

    class NettyReadableBuffer
    extends AbstractReadableBuffer
    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 
      Modifier and Type Field Description
      private io.netty.buffer.ByteBuf buffer  
      private boolean closed  
    • Constructor Summary

      Constructors 
      Constructor Description
      NettyReadableBuffer​(io.netty.buffer.ByteBuf buffer)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] array()
      Gets the backing array for this buffer.
      int arrayOffset()
      Gets the offset in the backing array of the current read position.
      (package private) io.netty.buffer.ByteBuf buffer()  
      boolean byteBufferSupported()
      Indicates whether or not ReadableBuffer.getByteBuffer() operation is supported for this buffer.
      void close()
      If the first call to close, calls ReferenceCounted.release() to release the internal Netty buffer.
      java.nio.ByteBuffer getByteBuffer()
      Gets a ByteBuffer that contains some bytes of the content next to be read, or null 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 markSupported()
      Indicates whether or not ReadableBuffer.mark() operation is supported for this buffer.
      int readableBytes()
      Gets the current number of readable bytes remaining in this buffer.
      void readBytes​(byte[] dest, int index, int length)
      Reads length bytes from this buffer and writes them to the destination array.
      NettyReadableBuffer readBytes​(int length)
      Reads length bytes from this buffer and returns a new Buffer containing them.
      void readBytes​(java.io.OutputStream dest, int length)
      Reads length bytes from this buffer and writes them to the destination stream.
      void readBytes​(java.nio.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 readUnsignedByte()
      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 time ReadableBuffer.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 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • buffer

        private final io.netty.buffer.ByteBuf buffer
      • closed

        private boolean closed
    • Constructor Detail

      • NettyReadableBuffer

        NettyReadableBuffer​(io.netty.buffer.ByteBuf buffer)
    • Method Detail

      • 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
        Reads length bytes from this buffer and writes them to the destination array. Increments the read position by length.
        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

        public void readBytes​(java.nio.ByteBuffer dest)
        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

        public void readBytes​(java.io.OutputStream dest,
                              int length)
        Description copied from interface: ReadableBuffer
        Reads length bytes from this buffer and writes them to the destination stream. Increments the read position by length. If the required bytes are not readable, throws IndexOutOfBoundsException.
        Parameters:
        dest - the destination stream to receive the bytes.
        length - the number of bytes to be copied.
      • readBytes

        public NettyReadableBuffer readBytes​(int length)
        Description copied from interface: ReadableBuffer
        Reads length 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.
      • 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.
      • getByteBuffer

        public java.nio.ByteBuffer getByteBuffer()
        Description copied from interface: ReadableBuffer
        Gets a ByteBuffer that contains some bytes of the content next to be read, or null 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 check ReadableBuffer.byteBufferSupported().
        Specified by:
        getByteBuffer in interface ReadableBuffer
        Overrides:
        getByteBuffer in class AbstractReadableBuffer
      • close

        public void close()
        If the first call to close, calls ReferenceCounted.release() to release the internal Netty buffer.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface ReadableBuffer
        Overrides:
        close in class AbstractReadableBuffer