Class DynamicChannelBuffer

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] array()
      Returns the backing byte array of this buffer.
      int arrayOffset()
      Returns the offset of the first byte within the backing byte array of this buffer.
      int capacity()
      Returns the number of bytes (octets) this buffer can contain.
      ChannelBuffer copy​(int index, int length)
      Returns a copy of this buffer's sub-region.
      ChannelBuffer duplicate()
      Returns a buffer which shares the whole region of this buffer.
      void ensureWritableBytes​(int minWritableBytes)
      Makes sure the number of the writable bytes is equal to or greater than the specified value.
      ChannelBufferFactory factory()
      Returns the factory which creates a ChannelBuffer whose type and default ByteOrder are same with this buffer.
      byte getByte​(int index)
      Gets a byte at the specified absolute index in this buffer.
      void getBytes​(int index, byte[] dst, int dstIndex, int length)
      Transfers this buffer's data to the specified destination starting at the specified absolute index.
      void getBytes​(int index, java.io.OutputStream out, int length)
      Transfers this buffer's data to the specified stream starting at the specified absolute index.
      void getBytes​(int index, java.nio.ByteBuffer dst)
      Transfers this buffer's data to the specified destination starting at the specified absolute index until the destination's position reaches its limit.
      int getBytes​(int index, java.nio.channels.GatheringByteChannel out, int length)
      Transfers this buffer's data to the specified channel starting at the specified absolute index.
      void getBytes​(int index, ChannelBuffer dst, int dstIndex, int length)
      Transfers this buffer's data to the specified destination starting at the specified absolute index.
      int getInt​(int index)
      Gets a 32-bit integer at the specified absolute index in this buffer.
      long getLong​(int index)
      Gets a 64-bit long integer at the specified absolute index in this buffer.
      short getShort​(int index)
      Gets a 16-bit short integer at the specified absolute index in this buffer.
      int getUnsignedMedium​(int index)
      Gets an unsigned 24-bit medium integer at the specified absolute index in this buffer.
      boolean hasArray()
      Returns true if and only if this buffer has a backing byte array.
      boolean isDirect()
      Returns true if and only if this buffer is backed by an NIO direct buffer.
      java.nio.ByteOrder order()
      Returns the endianness of this buffer.
      void setByte​(int index, int value)
      Sets the specified byte at the specified absolute index in this buffer.
      void setBytes​(int index, byte[] src, int srcIndex, int length)
      Transfers the specified source array's data to this buffer starting at the specified absolute index.
      int setBytes​(int index, java.io.InputStream in, int length)
      Transfers the content of the specified source stream to this buffer starting at the specified absolute index.
      void setBytes​(int index, java.nio.ByteBuffer src)
      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.
      int setBytes​(int index, java.nio.channels.ScatteringByteChannel in, int length)
      Transfers the content of the specified source channel to this buffer starting at the specified absolute index.
      void setBytes​(int index, ChannelBuffer src, int srcIndex, int length)
      Transfers the specified source buffer's data to this buffer starting at the specified absolute index.
      void setInt​(int index, int value)
      Sets the specified 32-bit integer at the specified absolute index in this buffer.
      void setLong​(int index, long value)
      Sets the specified 64-bit long integer at the specified absolute index in this buffer.
      void setMedium​(int index, int value)
      Sets the specified 24-bit medium integer at the specified absolute index in this buffer.
      void setShort​(int index, int value)
      Sets the specified 16-bit short integer at the specified absolute index in this buffer.
      ChannelBuffer slice​(int index, int length)
      Returns a slice of this buffer's sub-region.
      java.nio.ByteBuffer toByteBuffer​(int index, int length)
      Converts this buffer's sub-region into a NIO buffer.
      void writeByte​(int value)
      Sets the specified byte at the current writerIndex and increases the writerIndex by 1 in this buffer.
      void writeBytes​(byte[] src, int srcIndex, int length)
      Transfers the specified source array's data to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes (= length).
      int writeBytes​(java.io.InputStream in, int length)
      Transfers the content of the specified stream to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes.
      void writeBytes​(java.nio.ByteBuffer src)
      Transfers the specified source buffer's data to this buffer starting at the current writerIndex until the source buffer's position reaches its limit, and increases the writerIndex by the number of the transferred bytes.
      int writeBytes​(java.nio.channels.ScatteringByteChannel in, int length)
      Transfers the content of the specified channel to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes.
      void writeBytes​(ChannelBuffer src, int srcIndex, int length)
      Transfers the specified source buffer's data to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes (= length).
      void writeInt​(int value)
      Sets the specified 32-bit integer at the current writerIndex and increases the writerIndex by 4 in this buffer.
      void writeLong​(long value)
      Sets the specified 64-bit long integer at the current writerIndex and increases the writerIndex by 8 in this buffer.
      void writeMedium​(int value)
      Sets the specified 24-bit medium integer at the current writerIndex and increases the writerIndex by 3 in this buffer.
      void writeShort​(int value)
      Sets the specified 16-bit short integer at the current writerIndex and increases the writerIndex by 2 in this buffer.
      void writeZero​(int length)
      Fills this buffer with NUL (0x00) starting at the current writerIndex and increases the writerIndex by the specified length.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • DynamicChannelBuffer

        public DynamicChannelBuffer​(int estimatedLength)
      • DynamicChannelBuffer

        public DynamicChannelBuffer​(java.nio.ByteOrder endianness,
                                    int estimatedLength)
      • DynamicChannelBuffer

        public DynamicChannelBuffer​(java.nio.ByteOrder endianness,
                                    int estimatedLength,
                                    ChannelBufferFactory factory)
    • Method Detail

      • ensureWritableBytes

        public void ensureWritableBytes​(int minWritableBytes)
        Description copied from interface: ChannelBuffer
        Makes sure the number of the writable bytes is equal to or greater than the specified value. If there is enough writable bytes in this buffer, this method returns with no side effect. Otherwise:
        • a non-dynamic buffer will throw an IndexOutOfBoundsException.
        • a dynamic buffer will expand its capacity so that the number of the writable bytes becomes equal to or greater than the specified value. The expansion involves the reallocation of the internal buffer and consequently memory copy.
        Specified by:
        ensureWritableBytes in interface ChannelBuffer
        Overrides:
        ensureWritableBytes in class AbstractChannelBuffer
        Parameters:
        minWritableBytes - the expected minimum number of writable bytes
      • order

        public java.nio.ByteOrder order()
        Description copied from interface: ChannelBuffer
        Returns the endianness of this buffer.
      • isDirect

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

        public int capacity()
        Description copied from interface: ChannelBuffer
        Returns the number of bytes (octets) this buffer can contain.
      • array

        public byte[] array()
        Description copied from interface: ChannelBuffer
        Returns the backing byte array of this buffer.
      • arrayOffset

        public int arrayOffset()
        Description copied from interface: ChannelBuffer
        Returns the offset of the first byte within the backing byte array of this buffer.
      • getByte

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

        public short getShort​(int index)
        Description copied from interface: ChannelBuffer
        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.
      • getUnsignedMedium

        public int getUnsignedMedium​(int index)
        Description copied from interface: ChannelBuffer
        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.
      • getInt

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

        public long getLong​(int index)
        Description copied from interface: ChannelBuffer
        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.
      • getBytes

        public void getBytes​(int index,
                             byte[] dst,
                             int dstIndex,
                             int length)
        Description copied from interface: ChannelBuffer
        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.
        dstIndex - the first index of the destination
        length - the number of bytes to transfer
      • getBytes

        public void getBytes​(int index,
                             ChannelBuffer dst,
                             int dstIndex,
                             int length)
        Description copied from interface: ChannelBuffer
        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.
        dstIndex - the first index of the destination
        length - the number of bytes to transfer
      • getBytes

        public void getBytes​(int index,
                             java.nio.ByteBuffer dst)
        Description copied from interface: ChannelBuffer
        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.
      • getBytes

        public int getBytes​(int index,
                            java.nio.channels.GatheringByteChannel out,
                            int length)
                     throws java.io.IOException
        Description copied from interface: ChannelBuffer
        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.
        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 void getBytes​(int index,
                             java.io.OutputStream out,
                             int length)
                      throws java.io.IOException
        Description copied from interface: ChannelBuffer
        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.
        length - the number of bytes to transfer
        Throws:
        java.io.IOException - if the specified stream threw an exception during I/O
      • setByte

        public void setByte​(int index,
                            int value)
        Description copied from interface: ChannelBuffer
        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.
      • setShort

        public void setShort​(int index,
                             int value)
        Description copied from interface: ChannelBuffer
        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.
      • setMedium

        public void setMedium​(int index,
                              int value)
        Description copied from interface: ChannelBuffer
        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.
      • setInt

        public void setInt​(int index,
                           int value)
        Description copied from interface: ChannelBuffer
        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.
      • setLong

        public void setLong​(int index,
                            long value)
        Description copied from interface: ChannelBuffer
        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.
      • setBytes

        public void setBytes​(int index,
                             byte[] src,
                             int srcIndex,
                             int length)
        Description copied from interface: ChannelBuffer
        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.
      • setBytes

        public void setBytes​(int index,
                             ChannelBuffer src,
                             int srcIndex,
                             int length)
        Description copied from interface: ChannelBuffer
        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.
        srcIndex - the first index of the source
        length - the number of bytes to transfer
      • setBytes

        public void setBytes​(int index,
                             java.nio.ByteBuffer src)
        Description copied from interface: ChannelBuffer
        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.
      • setBytes

        public int setBytes​(int index,
                            java.io.InputStream in,
                            int length)
                     throws java.io.IOException
        Description copied from interface: ChannelBuffer
        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.
        length - the number of bytes to transfer
        Returns:
        the actual number of bytes read in from the specified channel. -1 if the specified channel is closed.
        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 interface: ChannelBuffer
        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.
        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.
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • writeByte

        public void writeByte​(int value)
        Description copied from interface: ChannelBuffer
        Sets the specified byte at the current writerIndex and increases the writerIndex by 1 in this buffer. The 24 high-order bits of the specified value are ignored.
        Specified by:
        writeByte in interface ChannelBuffer
        Overrides:
        writeByte in class AbstractChannelBuffer
      • writeShort

        public void writeShort​(int value)
        Description copied from interface: ChannelBuffer
        Sets the specified 16-bit short integer at the current writerIndex and increases the writerIndex by 2 in this buffer. The 16 high-order bits of the specified value are ignored.
        Specified by:
        writeShort in interface ChannelBuffer
        Overrides:
        writeShort in class AbstractChannelBuffer
      • writeInt

        public void writeInt​(int value)
        Description copied from interface: ChannelBuffer
        Sets the specified 32-bit integer at the current writerIndex and increases the writerIndex by 4 in this buffer.
        Specified by:
        writeInt in interface ChannelBuffer
        Overrides:
        writeInt in class AbstractChannelBuffer
      • writeLong

        public void writeLong​(long value)
        Description copied from interface: ChannelBuffer
        Sets the specified 64-bit long integer at the current writerIndex and increases the writerIndex by 8 in this buffer.
        Specified by:
        writeLong in interface ChannelBuffer
        Overrides:
        writeLong in class AbstractChannelBuffer
      • writeBytes

        public void writeBytes​(byte[] src,
                               int srcIndex,
                               int length)
        Description copied from interface: ChannelBuffer
        Transfers the specified source array's data to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes (= length).
        Specified by:
        writeBytes in interface ChannelBuffer
        Overrides:
        writeBytes in class AbstractChannelBuffer
        srcIndex - the first index of the source
        length - the number of bytes to transfer
      • writeBytes

        public void writeBytes​(ChannelBuffer src,
                               int srcIndex,
                               int length)
        Description copied from interface: ChannelBuffer
        Transfers the specified source buffer's data to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes (= length).
        Specified by:
        writeBytes in interface ChannelBuffer
        Overrides:
        writeBytes in class AbstractChannelBuffer
        srcIndex - the first index of the source
        length - the number of bytes to transfer
      • writeBytes

        public void writeBytes​(java.nio.ByteBuffer src)
        Description copied from interface: ChannelBuffer
        Transfers the specified source buffer's data to this buffer starting at the current writerIndex until the source buffer's position reaches its limit, and increases the writerIndex by the number of the transferred bytes.
        Specified by:
        writeBytes in interface ChannelBuffer
        Overrides:
        writeBytes in class AbstractChannelBuffer
      • writeBytes

        public int writeBytes​(java.io.InputStream in,
                              int length)
                       throws java.io.IOException
        Description copied from interface: ChannelBuffer
        Transfers the content of the specified stream to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes.
        Specified by:
        writeBytes in interface ChannelBuffer
        Overrides:
        writeBytes in class AbstractChannelBuffer
        length - the number of bytes to transfer
        Returns:
        the actual number of bytes read in from the specified stream
        Throws:
        java.io.IOException - if the specified stream threw an exception during I/O
      • writeBytes

        public int writeBytes​(java.nio.channels.ScatteringByteChannel in,
                              int length)
                       throws java.io.IOException
        Description copied from interface: ChannelBuffer
        Transfers the content of the specified channel to this buffer starting at the current writerIndex and increases the writerIndex by the number of the transferred bytes.
        Specified by:
        writeBytes in interface ChannelBuffer
        Overrides:
        writeBytes in class AbstractChannelBuffer
        length - the maximum number of bytes to transfer
        Returns:
        the actual number of bytes read in from the specified channel
        Throws:
        java.io.IOException - if the specified channel threw an exception during I/O
      • writeZero

        public void writeZero​(int length)
        Description copied from interface: ChannelBuffer
        Fills this buffer with NUL (0x00) starting at the current writerIndex and increases the writerIndex by the specified length.
        Specified by:
        writeZero in interface ChannelBuffer
        Overrides:
        writeZero in class AbstractChannelBuffer
        Parameters:
        length - the number of NULs to write to the buffer
      • duplicate

        public ChannelBuffer duplicate()
        Description copied from interface: ChannelBuffer
        Returns a buffer which shares the whole region of this buffer. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical to buf.slice(0, buf.capacity()). This method does not modify readerIndex or writerIndex of this buffer.
      • copy

        public ChannelBuffer copy​(int index,
                                  int length)
        Description copied from interface: ChannelBuffer
        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.
      • slice

        public ChannelBuffer slice​(int index,
                                   int length)
        Description copied from interface: ChannelBuffer
        Returns a slice of this buffer's sub-region. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method does not modify readerIndex or writerIndex of this buffer.
      • toByteBuffer

        public java.nio.ByteBuffer toByteBuffer​(int index,
                                                int length)
        Description copied from interface: ChannelBuffer
        Converts this buffer's sub-region into a NIO buffer. The returned buffer might or might not share the content with this buffer, while they have separate indexes and marks. This method does not modify readerIndex or writerIndex of this buffer.