com.alibaba.dubbo.remoting.transport.netty4
Class NettyBackedChannelBuffer

java.lang.Object
  extended by com.alibaba.dubbo.remoting.transport.netty4.NettyBackedChannelBuffer
All Implemented Interfaces:
ChannelBuffer, Comparable<ChannelBuffer>

public class NettyBackedChannelBuffer
extends Object
implements ChannelBuffer

Author:
kimi

Constructor Summary
NettyBackedChannelBuffer(io.netty.buffer.ByteBuf buffer)
           
 
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.
 void clear()
          Sets the readerIndex and writerIndex of this buffer to 0.
 int compareTo(ChannelBuffer o)
           
 ChannelBuffer copy()
          Returns a copy of this buffer's readable bytes.
 ChannelBuffer copy(int index, int length)
          Returns a copy of this buffer's sub-region.
 void discardReadBytes()
          Discards the bytes between the 0th index and readerIndex.
 void ensureWritableBytes(int writableBytes)
          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)
          Transfers this buffer's data to the specified destination starting at the specified absolute index.
 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)
          Transfers this buffer's data to the specified destination starting at the specified absolute index until the destination becomes non-writable.
 void getBytes(int index, ChannelBuffer dst, int length)
          Transfers this buffer's data to the specified destination 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.
 void getBytes(int index, OutputStream dst, 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 markReaderIndex()
          Marks the current readerIndex in this buffer.
 void markWriterIndex()
          Marks the current writerIndex in this buffer.
 boolean readable()
          Returns true if and only if (this.writerIndex - this.readerIndex) is greater than 0.
 int readableBytes()
          Returns the number of readable bytes which is equal to (this.writerIndex - this.readerIndex).
 byte readByte()
          Gets a byte at the current readerIndex and increases the readerIndex by 1 in this buffer.
 void readBytes(byte[] dst)
          Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= dst.length).
 void readBytes(byte[] dst, int dstIndex, int length)
          Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length).
 void readBytes(ByteBuffer dst)
          Transfers this buffer's data to the specified destination starting at the current readerIndex until the destination's position reaches its limit, and increases the readerIndex by the number of the transferred bytes.
 void readBytes(ChannelBuffer dst)
          Transfers this buffer's data to the specified destination starting at the current readerIndex until the destination becomes non-writable, and increases the readerIndex by the number of the transferred bytes.
 void readBytes(ChannelBuffer dst, int length)
          Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length).
 void readBytes(ChannelBuffer dst, int dstIndex, int length)
          Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length).
 ChannelBuffer readBytes(int length)
          Transfers this buffer's data to a newly created buffer starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length).
 void readBytes(OutputStream dst, int length)
          Transfers this buffer's data to the specified stream starting at the current readerIndex.
 int readerIndex()
          Returns the readerIndex of this buffer.
 void readerIndex(int readerIndex)
          Sets the readerIndex of this buffer.
 void resetReaderIndex()
          Repositions the current readerIndex to the marked readerIndex in this buffer.
 void resetWriterIndex()
          Marks the current writerIndex in 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)
          Transfers the specified source array's data to this buffer starting at the specified absolute index.
 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)
          Transfers the specified source buffer's data to this buffer starting at the specified absolute index until the source buffer becomes unreadable.
 void setBytes(int index, ChannelBuffer src, int length)
          Transfers the specified source buffer's data 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.
 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 setIndex(int readerIndex, int writerIndex)
          Sets the readerIndex and writerIndex of this buffer in one shot.
 void skipBytes(int length)
          Increases the current readerIndex by the specified length in this buffer.
 ByteBuffer toByteBuffer()
          Converts this buffer's readable bytes into a NIO buffer.
 ByteBuffer toByteBuffer(int index, int length)
          Converts this buffer's sub-region into a NIO buffer.
 boolean writable()
          Returns true if and only if (this.capacity - this.writerIndex) is greater than 0.
 int writableBytes()
          Returns the number of writable bytes which is equal to (this.capacity - this.writerIndex).
 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)
          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 (= src.length).
 void writeBytes(byte[] src, int index, 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).
 void writeBytes(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.
 void writeBytes(ChannelBuffer src)
          Transfers the specified source buffer's data to this buffer starting at the current writerIndex until the source buffer becomes unreadable, and increases the writerIndex by the number of the transferred bytes.
 void writeBytes(ChannelBuffer src, 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 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).
 int writeBytes(InputStream src, 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.
 int writerIndex()
          Returns the writerIndex of this buffer.
 void writerIndex(int writerIndex)
          Sets the writerIndex of this buffer.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.alibaba.dubbo.remoting.buffer.ChannelBuffer
equals
 

Constructor Detail

NettyBackedChannelBuffer

public NettyBackedChannelBuffer(io.netty.buffer.ByteBuf buffer)
Method Detail

capacity

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

Specified by:
capacity in interface ChannelBuffer

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.

Specified by:
copy in interface ChannelBuffer

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.

Specified by:
factory in interface ChannelBuffer

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.

Specified by:
getByte in interface ChannelBuffer

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.

Specified by:
getBytes in interface ChannelBuffer
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.

Specified by:
getBytes in interface ChannelBuffer

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.

Specified by:
getBytes in interface ChannelBuffer
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.

Specified by:
getBytes in interface ChannelBuffer
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.

Specified by:
isDirect in interface ChannelBuffer

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.

Specified by:
setByte in interface ChannelBuffer

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.

Specified by:
setBytes in interface ChannelBuffer

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.

Specified by:
setBytes in interface ChannelBuffer

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.

Specified by:
setBytes in interface ChannelBuffer
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.

Specified by:
setBytes in interface ChannelBuffer
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.

Specified by:
toByteBuffer in interface ChannelBuffer

array

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

Specified by:
array in interface ChannelBuffer

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

Specified by:
hasArray in interface ChannelBuffer

arrayOffset

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

Specified by:
arrayOffset in interface ChannelBuffer

clear

public void clear()
Description copied from interface: ChannelBuffer
Sets the readerIndex and writerIndex of this buffer to 0. This method is identical to setIndex(0, 0).

Please note that the behavior of this method is different from that of NIO buffer, which sets the limit to the capacity of the buffer.

Specified by:
clear in interface ChannelBuffer

copy

public ChannelBuffer copy()
Description copied from interface: ChannelBuffer
Returns a copy of this buffer's readable bytes. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method is identical to buf.copy(buf.readerIndex(), buf.readableBytes()). This method does not modify readerIndex or writerIndex of this buffer.

Specified by:
copy in interface ChannelBuffer

discardReadBytes

public void discardReadBytes()
Description copied from interface: ChannelBuffer
Discards the bytes between the 0th index and readerIndex. It moves the bytes between readerIndex and writerIndex to the 0th index, and sets readerIndex and writerIndex to 0 and oldWriterIndex - oldReaderIndex respectively.

Please refer to the class documentation for more detailed explanation.

Specified by:
discardReadBytes in interface ChannelBuffer

ensureWritableBytes

public void ensureWritableBytes(int writableBytes)
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:

Specified by:
ensureWritableBytes in interface ChannelBuffer
Parameters:
writableBytes - the expected minimum number of writable bytes

getBytes

public void getBytes(int index,
                     byte[] dst)
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

Specified by:
getBytes in interface ChannelBuffer

getBytes

public void getBytes(int index,
                     ChannelBuffer dst)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the specified absolute index until the destination becomes non-writable. This method is basically same with ChannelBuffer.getBytes(int, ChannelBuffer, int, int), except that this method increases the writerIndex of the destination by the number of the transferred bytes while ChannelBuffer.getBytes(int, ChannelBuffer, int, int) does not. This method does not modify readerIndex or writerIndex of the source buffer (i.e. this).

Specified by:
getBytes in interface ChannelBuffer

getBytes

public void getBytes(int index,
                     ChannelBuffer dst,
                     int length)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the specified absolute index. This method is basically same with ChannelBuffer.getBytes(int, ChannelBuffer, int, int), except that this method increases the writerIndex of the destination by the number of the transferred bytes while ChannelBuffer.getBytes(int, ChannelBuffer, int, int) does not. This method does not modify readerIndex or writerIndex of the source buffer (i.e. this).

Specified by:
getBytes in interface ChannelBuffer
length - the number of bytes to transfer

markReaderIndex

public void markReaderIndex()
Description copied from interface: ChannelBuffer
Marks the current readerIndex in this buffer. You can reposition the current readerIndex to the marked readerIndex by calling ChannelBuffer.resetReaderIndex(). The initial value of the marked readerIndex is 0.

Specified by:
markReaderIndex in interface ChannelBuffer

markWriterIndex

public void markWriterIndex()
Description copied from interface: ChannelBuffer
Marks the current writerIndex in this buffer. You can reposition the current writerIndex to the marked writerIndex by calling ChannelBuffer.resetWriterIndex(). The initial value of the marked writerIndex is 0.

Specified by:
markWriterIndex in interface ChannelBuffer

readable

public boolean readable()
Description copied from interface: ChannelBuffer
Returns true if and only if (this.writerIndex - this.readerIndex) is greater than 0.

Specified by:
readable in interface ChannelBuffer

readableBytes

public int readableBytes()
Description copied from interface: ChannelBuffer
Returns the number of readable bytes which is equal to (this.writerIndex - this.readerIndex).

Specified by:
readableBytes in interface ChannelBuffer

readByte

public byte readByte()
Description copied from interface: ChannelBuffer
Gets a byte at the current readerIndex and increases the readerIndex by 1 in this buffer.

Specified by:
readByte in interface ChannelBuffer

readBytes

public void readBytes(byte[] dst)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= dst.length).

Specified by:
readBytes in interface ChannelBuffer

readBytes

public void readBytes(byte[] dst,
                      int dstIndex,
                      int length)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length).

Specified by:
readBytes in interface ChannelBuffer
dstIndex - the first index of the destination
length - the number of bytes to transfer

readBytes

public void readBytes(ByteBuffer dst)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the current readerIndex until the destination's position reaches its limit, and increases the readerIndex by the number of the transferred bytes.

Specified by:
readBytes in interface ChannelBuffer

readBytes

public void readBytes(ChannelBuffer dst)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the current readerIndex until the destination becomes non-writable, and increases the readerIndex by the number of the transferred bytes. This method is basically same with ChannelBuffer.readBytes(ChannelBuffer, int, int), except that this method increases the writerIndex of the destination by the number of the transferred bytes while ChannelBuffer.readBytes(ChannelBuffer, int, int) does not.

Specified by:
readBytes in interface ChannelBuffer

readBytes

public void readBytes(ChannelBuffer dst,
                      int length)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length). This method is basically same with ChannelBuffer.readBytes(ChannelBuffer, int, int), except that this method increases the writerIndex of the destination by the number of the transferred bytes (= length) while ChannelBuffer.readBytes(ChannelBuffer, int, int) does not.

Specified by:
readBytes in interface ChannelBuffer

readBytes

public void readBytes(ChannelBuffer dst,
                      int dstIndex,
                      int length)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified destination starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length).

Specified by:
readBytes in interface ChannelBuffer
dstIndex - the first index of the destination
length - the number of bytes to transfer

readBytes

public ChannelBuffer readBytes(int length)
Description copied from interface: ChannelBuffer
Transfers this buffer's data to a newly created buffer starting at the current readerIndex and increases the readerIndex by the number of the transferred bytes (= length). The returned buffer's readerIndex and writerIndex are 0 and length respectively.

Specified by:
readBytes in interface ChannelBuffer
Parameters:
length - the number of bytes to transfer
Returns:
the newly created buffer which contains the transferred bytes

resetReaderIndex

public void resetReaderIndex()
Description copied from interface: ChannelBuffer
Repositions the current readerIndex to the marked readerIndex in this buffer.

Specified by:
resetReaderIndex in interface ChannelBuffer

resetWriterIndex

public void resetWriterIndex()
Description copied from interface: ChannelBuffer
Marks the current writerIndex in this buffer. You can reposition the current writerIndex to the marked writerIndex by calling ChannelBuffer.resetWriterIndex(). The initial value of the marked writerIndex is 0.

Specified by:
resetWriterIndex in interface ChannelBuffer

readerIndex

public int readerIndex()
Description copied from interface: ChannelBuffer
Returns the readerIndex of this buffer.

Specified by:
readerIndex in interface ChannelBuffer

readerIndex

public void readerIndex(int readerIndex)
Description copied from interface: ChannelBuffer
Sets the readerIndex of this buffer.

Specified by:
readerIndex in interface ChannelBuffer

readBytes

public void readBytes(OutputStream dst,
                      int length)
               throws IOException
Description copied from interface: ChannelBuffer
Transfers this buffer's data to the specified stream starting at the current readerIndex.

Specified by:
readBytes in interface ChannelBuffer
length - the number of bytes to transfer
Throws:
IOException - if the specified stream threw an exception during I/O

setBytes

public void setBytes(int index,
                     byte[] src)
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.

Specified by:
setBytes in interface ChannelBuffer

setBytes

public void setBytes(int index,
                     ChannelBuffer 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 becomes unreadable. This method is basically same with ChannelBuffer.setBytes(int, ChannelBuffer, int, int), except that this method increases the readerIndex of the source buffer by the number of the transferred bytes while ChannelBuffer.setBytes(int, ChannelBuffer, int, int) does not. This method does not modify readerIndex or writerIndex of the source buffer (i.e. this).

Specified by:
setBytes in interface ChannelBuffer

setBytes

public void setBytes(int index,
                     ChannelBuffer src,
                     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 is basically same with ChannelBuffer.setBytes(int, ChannelBuffer, int, int), except that this method increases the readerIndex of the source buffer by the number of the transferred bytes while ChannelBuffer.setBytes(int, ChannelBuffer, int, int) does not. This method does not modify readerIndex or writerIndex of the source buffer (i.e. this).

Specified by:
setBytes in interface ChannelBuffer
length - the number of bytes to transfer

setIndex

public void setIndex(int readerIndex,
                     int writerIndex)
Description copied from interface: ChannelBuffer
Sets the readerIndex and writerIndex of this buffer in one shot. This method is useful when you have to worry about the invocation order of ChannelBuffer.readerIndex(int) and ChannelBuffer.writerIndex(int) methods. For example, the following code will fail:

 // Create a buffer whose readerIndex, writerIndex and capacity are
 // 0, 0 and 8 respectively.
 ChannelBuffer buf = ChannelBuffers.buffer(8);

 // IndexOutOfBoundsException is thrown because the specified
 // readerIndex (2) cannot be greater than the current writerIndex (0).
 buf.readerIndex(2);
 buf.writerIndex(4);
 

The following code will also fail:

 // Create a buffer whose readerIndex, writerIndex and capacity are
 // 0, 8 and 8 respectively.
 ChannelBuffer buf = ChannelBuffers.wrappedBuffer(new
 byte[8]);

 // readerIndex becomes 8.
 buf.readLong();

 // IndexOutOfBoundsException is thrown because the specified
 // writerIndex (4) cannot be less than the current readerIndex (8).
 buf.writerIndex(4);
 buf.readerIndex(2);
 

By contrast, ChannelBuffer.setIndex(int, int) guarantees that it never throws an IndexOutOfBoundsException as long as the specified indexes meet basic constraints, regardless what the current index values of the buffer are:

 // No matter what the current state of the buffer is, the following
 // call always succeeds as long as the capacity of the buffer is not
 // less than 4.
 buf.setIndex(2, 4);
 

Specified by:
setIndex in interface ChannelBuffer

skipBytes

public void skipBytes(int length)
Description copied from interface: ChannelBuffer
Increases the current readerIndex by the specified length in this buffer.

Specified by:
skipBytes in interface ChannelBuffer

toByteBuffer

public ByteBuffer toByteBuffer()
Description copied from interface: ChannelBuffer
Converts this buffer's readable bytes 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 is identical to buf.toByteBuffer(buf.readerIndex(), buf.readableBytes()). This method does not modify readerIndex or writerIndex of this buffer.

Specified by:
toByteBuffer in interface ChannelBuffer

writable

public boolean writable()
Description copied from interface: ChannelBuffer
Returns true if and only if (this.capacity - this.writerIndex) is greater than 0.

Specified by:
writable in interface ChannelBuffer

writableBytes

public int writableBytes()
Description copied from interface: ChannelBuffer
Returns the number of writable bytes which is equal to (this.capacity - this.writerIndex).

Specified by:
writableBytes in interface ChannelBuffer

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

writeBytes

public void writeBytes(byte[] src)
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 (= src.length).

Specified by:
writeBytes in interface ChannelBuffer

writeBytes

public void writeBytes(byte[] src,
                       int index,
                       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
index - 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

writeBytes

public void writeBytes(ChannelBuffer 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 becomes unreadable, and increases the writerIndex by the number of the transferred bytes. This method is basically same with ChannelBuffer.writeBytes(ChannelBuffer, int, int), except that this method increases the readerIndex of the source buffer by the number of the transferred bytes while ChannelBuffer.writeBytes(ChannelBuffer, int, int) does not.

Specified by:
writeBytes in interface ChannelBuffer

writeBytes

public void writeBytes(ChannelBuffer src,
                       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). This method is basically same with ChannelBuffer.writeBytes(ChannelBuffer, int, int), except that this method increases the readerIndex of the source buffer by the number of the transferred bytes (= length) while ChannelBuffer.writeBytes(ChannelBuffer, int, int) does not.

Specified by:
writeBytes in interface ChannelBuffer
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
srcIndex - the first index of the source
length - the number of bytes to transfer

writeBytes

public int writeBytes(InputStream src,
                      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
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

writerIndex

public int writerIndex()
Description copied from interface: ChannelBuffer
Returns the writerIndex of this buffer.

Specified by:
writerIndex in interface ChannelBuffer

writerIndex

public void writerIndex(int writerIndex)
Description copied from interface: ChannelBuffer
Sets the writerIndex of this buffer.

Specified by:
writerIndex in interface ChannelBuffer

compareTo

public int compareTo(ChannelBuffer o)
Specified by:
compareTo in interface Comparable<ChannelBuffer>


Copyright © 2012–2017 Alibaba. All rights reserved.