com.alibaba.dubbo.remoting.buffer
Class HeapChannelBuffer

java.lang.Object
  extended by com.alibaba.dubbo.remoting.buffer.AbstractChannelBuffer
      extended by com.alibaba.dubbo.remoting.buffer.HeapChannelBuffer
All Implemented Interfaces:
ChannelBuffer, Comparable<ChannelBuffer>

public class HeapChannelBuffer
extends AbstractChannelBuffer

Author:
kimi

Constructor Summary
HeapChannelBuffer(byte[] array)
          Creates a new heap buffer with an existing byte array.
HeapChannelBuffer(int length)
          Creates a new heap buffer with a newly allocated byte array.
 
Method Summary
 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.
 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, 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.
 int getBytes(int index, GatheringByteChannel out, int length)
           
 void getBytes(int index, OutputStream out, int length)
          Transfers this buffer's data to the specified stream starting at the specified absolute index.
 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.
 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.
 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.
 int setBytes(int index, InputStream in, int length)
          Transfers the content of the specified source stream to this buffer starting at the specified absolute index.
 int setBytes(int index, ScatteringByteChannel in, int length)
           
 ByteBuffer toByteBuffer(int index, int length)
          Converts this buffer's sub-region into a NIO buffer.
 
Methods inherited from class com.alibaba.dubbo.remoting.buffer.AbstractChannelBuffer
clear, compareTo, copy, discardReadBytes, ensureWritableBytes, equals, getBytes, getBytes, getBytes, markReaderIndex, markWriterIndex, readable, readableBytes, readByte, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readerIndex, readerIndex, resetReaderIndex, resetWriterIndex, setBytes, setBytes, setBytes, setIndex, skipBytes, toByteBuffer, toString, writable, writableBytes, writeByte, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writerIndex, writerIndex
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HeapChannelBuffer

public HeapChannelBuffer(int length)
Creates a new heap buffer with a newly allocated byte array.

Parameters:
length - the length of the new byte array

HeapChannelBuffer

public HeapChannelBuffer(byte[] array)
Creates a new heap buffer with an existing byte array.

Parameters:
array - the byte array to wrap
Method Detail

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.


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().


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.


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,
                     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,
                     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,
                     OutputStream out,
                     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.

length - the number of bytes to transfer
Throws:
IOException - if the specified stream threw an exception during I/O

getBytes

public int getBytes(int index,
                    GatheringByteChannel out,
                    int length)
             throws IOException
Throws:
IOException

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,
                     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,
                     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 int setBytes(int index,
                    InputStream in,
                    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.

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

setBytes

public int setBytes(int index,
                    ScatteringByteChannel in,
                    int length)
             throws IOException
Throws:
IOException

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.


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.



Copyright © 2012–2017 Alibaba. All rights reserved.