Class UnpooledHeapByteBuf

    • Constructor Detail

      • UnpooledHeapByteBuf

        public UnpooledHeapByteBuf​(ByteBufAllocator alloc,
                                   int initialCapacity,
                                   int maxCapacity)
        Creates a new heap buffer with a newly allocated byte array.
        Parameters:
        initialCapacity - the initial capacity of the underlying byte array
        maxCapacity - the max capacity of the underlying byte array
      • UnpooledHeapByteBuf

        protected UnpooledHeapByteBuf​(ByteBufAllocator alloc,
                                      byte[] initialArray,
                                      int maxCapacity)
        Creates a new heap buffer with an existing byte array.
        Parameters:
        initialArray - the initial underlying byte array
        maxCapacity - the max capacity of the underlying byte array
    • Method Detail

      • allocateArray

        protected byte[] allocateArray​(int initialCapacity)
      • freeArray

        protected void freeArray​(byte[] array)
      • order

        public java.nio.ByteOrder order()
        Description copied from class: ByteBuf
        Returns the endianness of this buffer.
        Specified by:
        order in class ByteBuf
      • isDirect

        public boolean isDirect()
        Description copied from class: ByteBuf
        Returns true if and only if this buffer is backed by an NIO direct buffer.
        Specified by:
        isDirect in class ByteBuf
      • capacity

        public int capacity()
        Description copied from class: ByteBuf
        Returns the number of bytes (octets) this buffer can contain.
        Specified by:
        capacity in class ByteBuf
      • capacity

        public ByteBuf capacity​(int newCapacity)
        Description copied from class: ByteBuf
        Adjusts the capacity of this buffer. If the newCapacity is less than the current capacity, the content of this buffer is truncated. If the newCapacity is greater than the current capacity, the buffer is appended with unspecified data whose length is (newCapacity - currentCapacity).
        Specified by:
        capacity in class ByteBuf
      • array

        public byte[] array()
        Description copied from class: ByteBuf
        Returns the backing byte array of this buffer.
        Specified by:
        array in class ByteBuf
      • arrayOffset

        public int arrayOffset()
        Description copied from class: ByteBuf
        Returns the offset of the first byte within the backing byte array of this buffer.
        Specified by:
        arrayOffset in class ByteBuf
      • hasMemoryAddress

        public boolean hasMemoryAddress()
        Description copied from class: ByteBuf
        Returns true if and only if this buffer has a reference to the low-level memory address that points to the backing data.
        Specified by:
        hasMemoryAddress in class ByteBuf
      • memoryAddress

        public long memoryAddress()
        Description copied from class: ByteBuf
        Returns the low-level memory address that point to the first byte of ths backing data.
        Specified by:
        memoryAddress in class ByteBuf
      • getBytes

        public ByteBuf getBytes​(int index,
                                ByteBuf dst,
                                int dstIndex,
                                int length)
        Description copied from class: ByteBuf
        Transfers this buffer's data to the specified destination starting at the specified absolute index. This method does not modify readerIndex or writerIndex of both the source (i.e. this) and the destination.
        Specified by:
        getBytes in class ByteBuf
        dstIndex - the first index of the destination
        length - the number of bytes to transfer
      • getBytes

        public ByteBuf getBytes​(int index,
                                byte[] dst,
                                int dstIndex,
                                int length)
        Description copied from class: ByteBuf
        Transfers this buffer's data to the specified destination starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        getBytes in class ByteBuf
        dstIndex - the first index of the destination
        length - the number of bytes to transfer
      • getBytes

        public ByteBuf getBytes​(int index,
                                java.nio.ByteBuffer dst)
        Description copied from class: ByteBuf
        Transfers this buffer's data to the specified destination starting at the specified absolute index until the destination's position reaches its limit. This method does not modify readerIndex or writerIndex of this buffer while the destination's position will be increased.
        Specified by:
        getBytes in class ByteBuf
      • getBytes

        public ByteBuf getBytes​(int index,
                                java.io.OutputStream out,
                                int length)
                         throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers this buffer's data to the specified stream starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        getBytes in class ByteBuf
        length - the number of bytes to transfer
        Throws:
        java.io.IOException - if the specified stream threw an exception during I/O
      • getBytes

        public int getBytes​(int index,
                            java.nio.channels.GatheringByteChannel out,
                            int length)
                     throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers this buffer's data to the specified channel starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        getBytes in class ByteBuf
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes written out to the specified channel
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • getBytes

        public int getBytes​(int index,
                            java.nio.channels.FileChannel out,
                            long position,
                            int length)
                     throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers this buffer's data starting at the specified absolute index to the specified channel starting at the given file position. This method does not modify readerIndex or writerIndex of this buffer. This method does not modify the channel's position.
        Specified by:
        getBytes in class ByteBuf
        position - the file position at which the transfer is to begin
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes written out to the specified channel
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • readBytes

        public int readBytes​(java.nio.channels.GatheringByteChannel out,
                             int length)
                      throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers this buffer's data to the specified stream starting at the current readerIndex.
        Overrides:
        readBytes in class AbstractByteBuf
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes written out to the specified channel
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • readBytes

        public int readBytes​(java.nio.channels.FileChannel out,
                             long position,
                             int length)
                      throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers this buffer's data starting at the current readerIndex to the specified channel starting at the given file position. This method does not modify the channel's position.
        Overrides:
        readBytes in class AbstractByteBuf
        position - the file position at which the transfer is to begin
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes written out to the specified channel
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • setBytes

        public ByteBuf setBytes​(int index,
                                ByteBuf src,
                                int srcIndex,
                                int length)
        Description copied from class: ByteBuf
        Transfers the specified source buffer's data to this buffer starting at the specified absolute index. This method does not modify readerIndex or writerIndex of both the source (i.e. this) and the destination.
        Specified by:
        setBytes in class ByteBuf
        srcIndex - the first index of the source
        length - the number of bytes to transfer
      • setBytes

        public ByteBuf setBytes​(int index,
                                byte[] src,
                                int srcIndex,
                                int length)
        Description copied from class: ByteBuf
        Transfers the specified source array's data to this buffer starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        setBytes in class ByteBuf
      • setBytes

        public ByteBuf setBytes​(int index,
                                java.nio.ByteBuffer src)
        Description copied from class: ByteBuf
        Transfers the specified source buffer's data to this buffer starting at the specified absolute index until the source buffer's position reaches its limit. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        setBytes in class ByteBuf
      • setBytes

        public int setBytes​(int index,
                            java.io.InputStream in,
                            int length)
                     throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers the content of the specified source stream to this buffer starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        setBytes in class ByteBuf
        length - the number of bytes to transfer
        Returns:
        the actual number of bytes read in from the specified channel. -1 if the specified InputStream reached EOF.
        Throws:
        java.io.IOException - if the specified stream threw an exception during I/O
      • setBytes

        public int setBytes​(int index,
                            java.nio.channels.ScatteringByteChannel in,
                            int length)
                     throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers the content of the specified source channel to this buffer starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        setBytes in class ByteBuf
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes read in from the specified channel. -1 if the specified channel is closed or it reached EOF.
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • setBytes

        public int setBytes​(int index,
                            java.nio.channels.FileChannel in,
                            long position,
                            int length)
                     throws java.io.IOException
        Description copied from class: ByteBuf
        Transfers the content of the specified source channel starting at the given file position to this buffer starting at the specified absolute index. This method does not modify readerIndex or writerIndex of this buffer. This method does not modify the channel's position.
        Specified by:
        setBytes in class ByteBuf
        position - the file position at which the transfer is to begin
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes read in from the specified channel. -1 if the specified channel is closed or it reached EOF.
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • nioBuffer

        public java.nio.ByteBuffer nioBuffer​(int index,
                                             int length)
        Description copied from class: ByteBuf
        Exposes this buffer's sub-region as an NIO ByteBuffer. The returned buffer either share or contains the copied content of this buffer, while changing the position and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. This method does not modify readerIndex or writerIndex of this buffer. Please note that the returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic buffer and it adjusted its capacity.
        Specified by:
        nioBuffer in class ByteBuf
        See Also:
        ByteBuf.nioBufferCount(), ByteBuf.nioBuffers(), ByteBuf.nioBuffers(int, int)
      • nioBuffers

        public java.nio.ByteBuffer[] nioBuffers​(int index,
                                                int length)
        Description copied from class: ByteBuf
        Exposes this buffer's bytes as an NIO ByteBuffer's for the specified index and length The returned buffer either share or contains the copied content of this buffer, while changing the position and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. This method does not modify readerIndex or writerIndex of this buffer. Please note that the returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic buffer and it adjusted its capacity.
        Specified by:
        nioBuffers in class ByteBuf
        See Also:
        ByteBuf.nioBufferCount(), ByteBuf.nioBuffer(), ByteBuf.nioBuffer(int, int)
      • internalNioBuffer

        public java.nio.ByteBuffer internalNioBuffer​(int index,
                                                     int length)
        Description copied from class: ByteBuf
        Internal use only: Exposes the internal NIO buffer.
        Specified by:
        internalNioBuffer in class ByteBuf
      • isContiguous

        public final boolean isContiguous()
        Description copied from class: ByteBuf
        Returns true if this ByteBuf implementation is backed by a single memory region. Composite buffer implementations must return false even if they currently hold ≤ 1 components. For buffers that return true, it's guaranteed that a successful call to ByteBuf.discardReadBytes() will increase the value of ByteBuf.maxFastWritableBytes() by the current readerIndex.

        This method will return false by default, and a false return value does not necessarily mean that the implementation is composite or that it is not backed by a single memory region.

        Overrides:
        isContiguous in class ByteBuf
      • getByte

        public byte getByte​(int index)
        Description copied from class: ByteBuf
        Gets a byte at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getByte in class AbstractByteBuf
      • getShort

        public short getShort​(int index)
        Description copied from class: ByteBuf
        Gets a 16-bit short integer at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getShort in class AbstractByteBuf
      • getShortLE

        public short getShortLE​(int index)
        Description copied from class: ByteBuf
        Gets a 16-bit short integer at the specified absolute index in this buffer in Little Endian Byte Order. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getShortLE in class AbstractByteBuf
      • getUnsignedMedium

        public int getUnsignedMedium​(int index)
        Description copied from class: ByteBuf
        Gets an unsigned 24-bit medium integer at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getUnsignedMedium in class AbstractByteBuf
      • getUnsignedMediumLE

        public int getUnsignedMediumLE​(int index)
        Description copied from class: ByteBuf
        Gets an unsigned 24-bit medium integer at the specified absolute index in this buffer in Little Endian Byte Order. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getUnsignedMediumLE in class AbstractByteBuf
      • getInt

        public int getInt​(int index)
        Description copied from class: ByteBuf
        Gets a 32-bit integer at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getInt in class AbstractByteBuf
      • getIntLE

        public int getIntLE​(int index)
        Description copied from class: ByteBuf
        Gets a 32-bit integer at the specified absolute index in this buffer with Little Endian Byte Order. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getIntLE in class AbstractByteBuf
      • getLong

        public long getLong​(int index)
        Description copied from class: ByteBuf
        Gets a 64-bit long integer at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getLong in class AbstractByteBuf
      • getLongLE

        public long getLongLE​(int index)
        Description copied from class: ByteBuf
        Gets a 64-bit long integer at the specified absolute index in this buffer in Little Endian Byte Order. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        getLongLE in class AbstractByteBuf
      • setByte

        public ByteBuf setByte​(int index,
                               int value)
        Description copied from class: ByteBuf
        Sets the specified byte at the specified absolute index in this buffer. The 24 high-order bits of the specified value are ignored. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setByte in class AbstractByteBuf
      • setShort

        public ByteBuf setShort​(int index,
                                int value)
        Description copied from class: ByteBuf
        Sets the specified 16-bit short integer at the specified absolute index in this buffer. The 16 high-order bits of the specified value are ignored. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setShort in class AbstractByteBuf
      • setShortLE

        public ByteBuf setShortLE​(int index,
                                  int value)
        Description copied from class: ByteBuf
        Sets the specified 16-bit short integer at the specified absolute index in this buffer with the Little Endian Byte Order. The 16 high-order bits of the specified value are ignored. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setShortLE in class AbstractByteBuf
      • setMedium

        public ByteBuf setMedium​(int index,
                                 int value)
        Description copied from class: ByteBuf
        Sets the specified 24-bit medium integer at the specified absolute index in this buffer. Please note that the most significant byte is ignored in the specified value. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setMedium in class AbstractByteBuf
      • setMediumLE

        public ByteBuf setMediumLE​(int index,
                                   int value)
        Description copied from class: ByteBuf
        Sets the specified 24-bit medium integer at the specified absolute index in this buffer in the Little Endian Byte Order. Please note that the most significant byte is ignored in the specified value. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setMediumLE in class AbstractByteBuf
      • setInt

        public ByteBuf setInt​(int index,
                              int value)
        Description copied from class: ByteBuf
        Sets the specified 32-bit integer at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setInt in class AbstractByteBuf
      • _setInt

        protected void _setInt​(int index,
                               int value)
        Specified by:
        _setInt in class AbstractByteBuf
      • setIntLE

        public ByteBuf setIntLE​(int index,
                                int value)
        Description copied from class: ByteBuf
        Sets the specified 32-bit integer at the specified absolute index in this buffer with Little Endian byte order . This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setIntLE in class AbstractByteBuf
      • setLong

        public ByteBuf setLong​(int index,
                               long value)
        Description copied from class: ByteBuf
        Sets the specified 64-bit long integer at the specified absolute index in this buffer. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setLong in class AbstractByteBuf
      • setLongLE

        public ByteBuf setLongLE​(int index,
                                 long value)
        Description copied from class: ByteBuf
        Sets the specified 64-bit long integer at the specified absolute index in this buffer in Little Endian Byte Order. This method does not modify readerIndex or writerIndex of this buffer.
        Overrides:
        setLongLE in class AbstractByteBuf
      • copy

        public ByteBuf copy​(int index,
                            int length)
        Description copied from class: ByteBuf
        Returns a copy of this buffer's sub-region. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method does not modify readerIndex or writerIndex of this buffer.
        Specified by:
        copy in class ByteBuf
      • unwrap

        public ByteBuf unwrap()
        Description copied from class: ByteBuf
        Return the underlying buffer instance if this buffer is a wrapper of another buffer.
        Specified by:
        unwrap in class ByteBuf
        Returns:
        null if this buffer is not a wrapper