Class DynamicChannelBuffer

java.lang.Object
org.apache.dubbo.remoting.buffer.AbstractChannelBuffer
org.apache.dubbo.remoting.buffer.DynamicChannelBuffer
All Implemented Interfaces:
Comparable<ChannelBuffer>, ChannelBuffer

public class DynamicChannelBuffer extends AbstractChannelBuffer
  • Constructor Summary

    Constructors
    Constructor
    Description
    DynamicChannelBuffer(int estimatedLength)
     
    DynamicChannelBuffer(int estimatedLength, ChannelBufferFactory factory)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    byte[]
    Returns the backing byte array of this buffer.
    int
    Returns the offset of the first byte within the backing byte array of this buffer.
    int
    Returns the number of bytes (octets) this buffer can contain.
    copy(int index, int length)
    Returns a copy of this buffer's sub-region.
    void
    ensureWritableBytes(int minWritableBytes)
    Makes sure the number of the writable bytes is equal to or greater than the specified value.
    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, OutputStream dst, int length)
    Transfers this buffer's data to the specified stream starting at the specified absolute index.
    void
    getBytes(int index, 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.
    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.
    boolean
    Returns true if and only if this buffer has a backing byte array.
    boolean
    Returns true if and only if this buffer is backed by an NIO direct buffer.
    void
    If this buffer is backed by an NIO direct buffer, in some scenarios it may be necessary to manually release.
    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, InputStream src, int length)
    Transfers the content of the specified source stream to this buffer starting at the specified absolute index.
    void
    setBytes(int index, 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.
    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.
    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(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
    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.
    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).

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • DynamicChannelBuffer

      public DynamicChannelBuffer(int estimatedLength)
    • DynamicChannelBuffer

      public DynamicChannelBuffer(int estimatedLength, ChannelBufferFactory factory)
  • Method Details

    • 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
    • capacity

      public int capacity()
      Description copied from interface: ChannelBuffer
      Returns the number of bytes (octets) this buffer can contain.
    • 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.
    • factory

      public ChannelBufferFactory factory()
      Description copied from interface: ChannelBuffer
      Returns the factory which creates a ChannelBuffer whose type and default ByteOrder are same with 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.
    • 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.
      Parameters:
      dstIndex - the first index of the destination
      length - the number of bytes to transfer
    • getBytes

      public void getBytes(int index, 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 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.
      Parameters:
      dstIndex - the first index of the destination
      length - the number of bytes to transfer
    • getBytes

      public void getBytes(int index, OutputStream dst, int length) throws 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.
      Parameters:
      length - the number of bytes to transfer
      Throws:
      IOException - if the specified stream threw an exception during I/O
    • isDirect

      public boolean isDirect()
      Description copied from interface: ChannelBuffer
      Returns true if and only if this buffer is backed by an NIO direct buffer.
    • 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.
    • 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, 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 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.
      Parameters:
      srcIndex - the first index of the source
      length - the number of bytes to transfer
    • setBytes

      public int setBytes(int index, InputStream src, int length) throws 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.
      Parameters:
      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:
      IOException - if the specified stream threw an exception during I/O
    • toByteBuffer

      public 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.
    • 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
    • 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
      Parameters:
      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
      Parameters:
      srcIndex - the first index of the source
      length - the number of bytes to transfer
    • writeBytes

      public void writeBytes(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(InputStream in, int length) throws 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
      Parameters:
      length - the number of bytes to transfer
      Returns:
      the actual number of bytes read in from the specified stream
      Throws:
      IOException - if the specified stream threw an exception during I/O
    • array

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

      public boolean hasArray()
      Description copied from interface: ChannelBuffer
      Returns true if and only if this buffer has a backing byte array. If this method returns true, you can safely call ChannelBuffer.array() and ChannelBuffer.arrayOffset().
    • arrayOffset

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

      public void release()
      Description copied from interface: ChannelBuffer
      If this buffer is backed by an NIO direct buffer, in some scenarios it may be necessary to manually release.