org.jboss.messaging.core.client.impl
Class LargeMessageBufferImpl

java.lang.Object
  extended by org.jboss.messaging.core.client.impl.LargeMessageBufferImpl
All Implemented Interfaces:
java.lang.Comparable<ChannelBuffer>, ChannelBuffer, LargeMessageBuffer, MessagingBuffer

public class LargeMessageBufferImpl
extends java.lang.Object
implements ChannelBuffer, LargeMessageBuffer

This class aggregates several SessionReceiveContinuationMessages as it was being handled by a single buffer. This buffer can be consumed as messages are arriving, and it will hold the packets until they are read using the ChannelBuffer interface, or the setOutputStream or saveStream are called.

Author:
Clebert Suconic

Constructor Summary
LargeMessageBufferImpl(ClientConsumerInternal consumerInternal, long totalSize, int readTimeout)
           
 
Method Summary
 void addPacket(SessionReceiveContinuationMessage packet)
          Add a buff to the List, or save it to the OutputStream if set
 byte[] array()
           
 int capacity()
          Returns the number of bytes (octets) this buffer can contain.
 void clear()
          Sets the readerIndex and writerIndex of this buffer to 0.
 void close()
           
 int compareTo(ChannelBuffer buffer)
          Compares the content of the specified buffer to the content of this buffer.
 void discardReadBytes()
          Discards the bytes between the 0th index and readerIndex.
 void discardUnusedPackets()
           
 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, 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.
 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.
 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, java.io.OutputStream out, int length)
          Transfers this buffer's data to the specified stream starting at the specified absolute index.
 void getBytes(long index, byte[] dst)
           
 void getBytes(long index, byte[] dst, int dstIndex, int length)
           
 void getBytes(long index, java.nio.ByteBuffer dst)
           
 void getBytes(long index, ChannelBuffer dst, int dstIndex, int length)
           
 void getBytes(long index, java.io.OutputStream out, int length)
           
 java.lang.Exception getHandledException()
           
 int getInt(int index)
          Gets a 32-bit integer at the specified absolute index in this buffer.
 int getInt(long index)
           
 long getLong(int index)
          Gets a 64-bit long integer at the specified absolute index in this buffer.
 long getLong(long index)
           
 int getMedium(int index)
          Gets a 24-bit medium 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.
 short getShort(long index)
           
 long getSize()
           
 java.lang.Object getUnderlyingBuffer()
           
 short getUnsignedByte(int index)
          Gets an unsigned byte at the specified absolute index in this buffer.
 long getUnsignedInt(int index)
          Gets an unsigned 32-bit 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.
 int getUnsignedMedium(long index)
           
 int getUnsignedShort(int index)
          Gets an unsigned 16-bit short integer at the specified absolute index in this 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).
 boolean readBoolean()
           
 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(java.nio.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).
 int readBytes(java.nio.channels.GatheringByteChannel out, int length)
          Transfers this buffer's data to the specified stream starting at the current readerIndex.
 void readBytes(java.io.OutputStream out, int length)
          Transfers this buffer's data to the specified stream starting at the current readerIndex.
 char readChar()
           
 double readDouble()
           
 int readerIndex()
          Returns the readerIndex of this buffer.
 void readerIndex(int readerIndex)
          Sets the readerIndex of this buffer.
 float readFloat()
           
 int readInt()
          Gets a 32-bit integer at the current readerIndex and increases the readerIndex by 4 in this buffer.
 long readLong()
          Gets a 64-bit integer at the current readerIndex and increases the readerIndex by 8 in this buffer.
 int readMedium()
          Gets a 24-bit medium integer at the current readerIndex and increases the readerIndex by 3 in this buffer.
 SimpleString readNullableSimpleString()
           
 java.lang.String readNullableString()
           
 short readShort()
          Gets a 16-bit short integer at the current readerIndex and increases the readerIndex by 2 in this buffer.
 SimpleString readSimpleString()
           
 java.lang.String readString()
           
 short readUnsignedByte()
          Gets an unsigned byte at the current readerIndex and increases the readerIndex by 1 in this buffer.
 long readUnsignedInt()
          Gets an unsigned 32-bit integer at the current readerIndex and increases the readerIndex by 4 in this buffer.
 int readUnsignedMedium()
          Gets an unsigned 24-bit medium integer at the current readerIndex and increases the readerIndex by 3 in this buffer.
 int readUnsignedShort()
          Gets an unsigned 16-bit short integer at the current readerIndex and increases the readerIndex by 2 in this buffer.
 java.lang.String readUTF()
           
 void resetReaderIndex()
          Repositions the current readerIndex to the marked readerIndex in this buffer.
 void resetWriterIndex()
          Repositions the current writerIndex to the marked writerIndex in this buffer.
 void saveBuffer(java.io.OutputStream output)
           
 void setByte(int index, byte 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, 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.
 void setBytes(int index, ChannelBuffer src)
          Transfers the specified source buffer's data to this buffer starting at the specified absolute index until the destination 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, java.io.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, 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 setIndex(int readerIndex, int writerIndex)
          Sets the readerIndex and writerIndex of this buffer in one shot.
 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 setOutputStream(java.io.OutputStream output)
           
 void setShort(int index, short value)
          Sets the specified 16-bit short integer at the specified absolute index in this buffer.
 void setZero(int index, int length)
          Fills this buffer with NUL (0x00) starting at the specified absolute index.
 void skipBytes(int length)
          Increases the current readerIndex by the specified length in this buffer.
 java.nio.ByteBuffer toByteBuffer()
          Converts this buffer's readable bytes into a NIO buffer.
 java.nio.ByteBuffer toByteBuffer(int index, int length)
          Converts this buffer's sub-region into a NIO buffer.
 java.nio.ByteBuffer[] toByteBuffers()
           
 java.nio.ByteBuffer[] toByteBuffers(int index, int length)
          Converts this buffer's sub-region into an array of NIO buffers.
 java.lang.String toString(int index, int length, java.lang.String charsetName)
          Decodes this buffer's sub-region into a string with the specified character set name.
 java.lang.String toString(java.lang.String charsetName)
          Decodes this buffer's readable bytes into a string with the specified character set name.
 boolean waitCompletion(long timeWait)
           
 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 writeBoolean(boolean val)
           
 void writeByte(byte 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 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).
 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.
 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).
 void 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(MessagingBuffer src, int srcIndex, int length)
           
 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 writeChar(char val)
           
 void writeDouble(double val)
           
 void writeFloat(float val)
           
 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 writeNullableSimpleString(SimpleString val)
           
 void writeNullableString(java.lang.String val)
           
 int writerIndex()
          Returns the writerIndex of this buffer.
 void writerIndex(int writerIndex)
          Sets the writerIndex of this buffer.
 void writeShort(short value)
          Sets the specified 16-bit short integer at the current writerIndex and increases the writerIndex by 2 in this buffer.
 void writeSimpleString(SimpleString val)
           
 void writeString(java.lang.String val)
           
 void writeUTF(java.lang.String utf)
           
 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, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.messaging.core.buffers.ChannelBuffer
equals, hashCode, toString
 

Constructor Detail

LargeMessageBufferImpl

public LargeMessageBufferImpl(ClientConsumerInternal consumerInternal,
                              long totalSize,
                              int readTimeout)
Method Detail

getHandledException

public java.lang.Exception getHandledException()

discardUnusedPackets

public void discardUnusedPackets()
Specified by:
discardUnusedPackets in interface LargeMessageBuffer

addPacket

public void addPacket(SessionReceiveContinuationMessage packet)
Add a buff to the List, or save it to the OutputStream if set

Parameters:
packet -

close

public void close()
Specified by:
close in interface LargeMessageBuffer

setOutputStream

public void setOutputStream(java.io.OutputStream output)
                     throws MessagingException
Specified by:
setOutputStream in interface LargeMessageBuffer
Throws:
MessagingException

saveBuffer

public void saveBuffer(java.io.OutputStream output)
                throws MessagingException
Specified by:
saveBuffer in interface LargeMessageBuffer
Throws:
MessagingException

waitCompletion

public boolean waitCompletion(long timeWait)
                       throws MessagingException
Specified by:
waitCompletion in interface LargeMessageBuffer
Parameters:
timeWait - Milliseconds to Wait. 0 means forever
Throws:
java.lang.Exception
MessagingException

array

public byte[] array()
Specified by:
array in interface ChannelBuffer
Specified by:
array in interface MessagingBuffer

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
Specified by:
capacity in interface MessagingBuffer

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
Specified by:
readByte in interface MessagingBuffer

getByte

public byte getByte(int index)
Description copied from interface: ChannelBuffer
Gets a byte at the specified absolute index in this buffer.

Specified by:
getByte 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.

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

getBytes

public void getBytes(long index,
                     ChannelBuffer dst,
                     int dstIndex,
                     int length)

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.

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

getBytes

public void getBytes(long index,
                     byte[] dst,
                     int dstIndex,
                     int length)

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.

Specified by:
getBytes in interface ChannelBuffer

getBytes

public void getBytes(long index,
                     java.nio.ByteBuffer dst)

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.

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

getBytes

public void getBytes(long index,
                     java.io.OutputStream out,
                     int length)
              throws java.io.IOException
Throws:
java.io.IOException

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.

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

getInt

public int getInt(int index)
Description copied from interface: ChannelBuffer
Gets a 32-bit integer at the specified absolute index in this buffer.

Specified by:
getInt in interface ChannelBuffer

getInt

public int getInt(long index)

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.

Specified by:
getLong in interface ChannelBuffer

getLong

public long getLong(long index)

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.

Specified by:
getShort in interface ChannelBuffer

getShort

public short getShort(long index)

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.

Specified by:
getUnsignedMedium in interface ChannelBuffer

getUnsignedMedium

public int getUnsignedMedium(long index)

setByte

public void setByte(int index,
                    byte value)
Description copied from interface: ChannelBuffer
Sets the specified byte at the specified absolute index in this buffer.

Specified by:
setByte 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.

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

Specified by:
setBytes in interface ChannelBuffer

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.

Specified by:
setBytes in interface ChannelBuffer

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.

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:
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.

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

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.

Specified by:
setInt in interface ChannelBuffer
Specified by:
setInt in interface MessagingBuffer

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.

Specified by:
setLong in interface ChannelBuffer

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.

Specified by:
setMedium in interface ChannelBuffer

setShort

public void setShort(int index,
                     short value)
Description copied from interface: ChannelBuffer
Sets the specified 16-bit short integer at the specified absolute index in this buffer.

Specified by:
setShort in interface ChannelBuffer

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.

Specified by:
toByteBuffer in interface ChannelBuffer

toString

public java.lang.String toString(int index,
                                 int length,
                                 java.lang.String charsetName)
Description copied from interface: ChannelBuffer
Decodes this buffer's sub-region into a string with the specified character set name.

Specified by:
toString in interface ChannelBuffer

readerIndex

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

Specified by:
readerIndex in interface ChannelBuffer
Specified by:
readerIndex in interface MessagingBuffer

readerIndex

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

Specified by:
readerIndex in interface ChannelBuffer
Specified by:
readerIndex in interface MessagingBuffer

writerIndex

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

Specified by:
writerIndex in interface ChannelBuffer
Specified by:
writerIndex in interface MessagingBuffer

getSize

public long getSize()
Specified by:
getSize in interface LargeMessageBuffer

writerIndex

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

Specified by:
writerIndex in interface ChannelBuffer
Specified by:
writerIndex in interface MessagingBuffer

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
Specified by:
setIndex in interface MessagingBuffer

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
Specified by:
clear in interface MessagingBuffer

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
Specified by:
readable in interface MessagingBuffer

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
Specified by:
writable in interface MessagingBuffer

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
Specified by:
readableBytes in interface MessagingBuffer

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
Specified by:
writableBytes in interface MessagingBuffer

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

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
Specified by:
resetReaderIndex in interface MessagingBuffer

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

resetWriterIndex

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

Specified by:
resetWriterIndex in interface ChannelBuffer
Specified by:
resetWriterIndex in interface MessagingBuffer

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

getUnsignedByte

public short getUnsignedByte(int index)
Description copied from interface: ChannelBuffer
Gets an unsigned byte at the specified absolute index in this buffer.

Specified by:
getUnsignedByte in interface ChannelBuffer

getUnsignedShort

public int getUnsignedShort(int index)
Description copied from interface: ChannelBuffer
Gets an unsigned 16-bit short integer at the specified absolute index in this buffer.

Specified by:
getUnsignedShort in interface ChannelBuffer

getMedium

public int getMedium(int index)
Description copied from interface: ChannelBuffer
Gets a 24-bit medium integer at the specified absolute index in this buffer.

Specified by:
getMedium in interface ChannelBuffer

getUnsignedInt

public long getUnsignedInt(int index)
Description copied from interface: ChannelBuffer
Gets an unsigned 32-bit integer at the specified absolute index in this buffer.

Specified by:
getUnsignedInt in interface ChannelBuffer

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.

Specified by:
getBytes in interface ChannelBuffer

getBytes

public void getBytes(long index,
                     byte[] dst)

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.

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.

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

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.

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 destination 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.getBytes(int, ChannelBuffer, int, int) does not.

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.getBytes(int, ChannelBuffer, int, int) does not.

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

setZero

public void setZero(int index,
                    int length)
Description copied from interface: ChannelBuffer
Fills this buffer with NUL (0x00) starting at the specified absolute index.

Specified by:
setZero in interface ChannelBuffer
length - the number of NULs to write to the buffer

readUnsignedByte

public short readUnsignedByte()
Description copied from interface: ChannelBuffer
Gets an unsigned byte at the current readerIndex and increases the readerIndex by 1 in this buffer.

Specified by:
readUnsignedByte in interface ChannelBuffer
Specified by:
readUnsignedByte in interface MessagingBuffer

readShort

public short readShort()
Description copied from interface: ChannelBuffer
Gets a 16-bit short integer at the current readerIndex and increases the readerIndex by 2 in this buffer.

Specified by:
readShort in interface ChannelBuffer
Specified by:
readShort in interface MessagingBuffer

readUnsignedShort

public int readUnsignedShort()
Description copied from interface: ChannelBuffer
Gets an unsigned 16-bit short integer at the current readerIndex and increases the readerIndex by 2 in this buffer.

Specified by:
readUnsignedShort in interface ChannelBuffer
Specified by:
readUnsignedShort in interface MessagingBuffer

readMedium

public int readMedium()
Description copied from interface: ChannelBuffer
Gets a 24-bit medium integer at the current readerIndex and increases the readerIndex by 3 in this buffer.

Specified by:
readMedium in interface ChannelBuffer

readUnsignedMedium

public int readUnsignedMedium()
Description copied from interface: ChannelBuffer
Gets an unsigned 24-bit medium integer at the current readerIndex and increases the readerIndex by 3 in this buffer.

Specified by:
readUnsignedMedium in interface ChannelBuffer

readInt

public int readInt()
Description copied from interface: ChannelBuffer
Gets a 32-bit integer at the current readerIndex and increases the readerIndex by 4 in this buffer.

Specified by:
readInt in interface ChannelBuffer
Specified by:
readInt in interface MessagingBuffer

readUnsignedInt

public long readUnsignedInt()
Description copied from interface: ChannelBuffer
Gets an unsigned 32-bit integer at the current readerIndex and increases the readerIndex by 4 in this buffer.

Specified by:
readUnsignedInt in interface ChannelBuffer

readLong

public long readLong()
Description copied from interface: ChannelBuffer
Gets a 64-bit integer at the current readerIndex and increases the readerIndex by 8 in this buffer.

Specified by:
readLong in interface ChannelBuffer
Specified by:
readLong in interface MessagingBuffer

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
Specified by:
readBytes in interface MessagingBuffer
dstIndex - the first index of the destination
length - the number of bytes to transfer

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
Specified by:
readBytes in interface MessagingBuffer

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 void readBytes(java.nio.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 int readBytes(java.nio.channels.GatheringByteChannel out,
                     int length)
              throws java.io.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 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 void readBytes(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 current readerIndex.

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

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

writeByte

public void writeByte(byte value)
Description copied from interface: ChannelBuffer
Sets the specified byte at the current writerIndex and increases the writerIndex by 1 in this buffer.

Specified by:
writeByte in interface ChannelBuffer
Specified by:
writeByte in interface MessagingBuffer

writeShort

public void writeShort(short 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.

Specified by:
writeShort in interface ChannelBuffer
Specified by:
writeShort in interface MessagingBuffer

writeMedium

public void writeMedium(int value)
Description copied from interface: ChannelBuffer
Sets the specified 24-bit medium integer at the current writerIndex and increases the writerIndex by 3 in this buffer.

Specified by:
writeMedium in interface ChannelBuffer

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
Specified by:
writeInt in interface MessagingBuffer

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
Specified by:
writeLong in interface MessagingBuffer

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

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
Specified by:
writeBytes in interface MessagingBuffer

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(MessagingBuffer src,
                       int srcIndex,
                       int length)
Specified by:
writeBytes in interface MessagingBuffer

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

writeBytes

public void 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
length - the number of bytes to transfer
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
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
Parameters:
length - the number of NULs to write to the buffer

toByteBuffer

public java.nio.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()).

Specified by:
toByteBuffer in interface ChannelBuffer

toByteBuffers

public java.nio.ByteBuffer[] toByteBuffers()

toByteBuffers

public java.nio.ByteBuffer[] toByteBuffers(int index,
                                           int length)
Description copied from interface: ChannelBuffer
Converts this buffer's sub-region into an array of NIO buffers. The returned buffers might or might not share the content with this buffer, while they have separate indexes and marks.

Specified by:
toByteBuffers in interface ChannelBuffer

toString

public java.lang.String toString(java.lang.String charsetName)
Description copied from interface: ChannelBuffer
Decodes this buffer's readable bytes into a string with the specified character set name. This method is identical to buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName).

Specified by:
toString in interface ChannelBuffer

getUnderlyingBuffer

public java.lang.Object getUnderlyingBuffer()
Specified by:
getUnderlyingBuffer in interface MessagingBuffer

readBoolean

public boolean readBoolean()
Specified by:
readBoolean in interface MessagingBuffer

readChar

public char readChar()
Specified by:
readChar in interface MessagingBuffer

readDouble

public double readDouble()
Specified by:
readDouble in interface MessagingBuffer

readFloat

public float readFloat()
Specified by:
readFloat in interface MessagingBuffer

readNullableSimpleString

public SimpleString readNullableSimpleString()
Specified by:
readNullableSimpleString in interface MessagingBuffer

readNullableString

public java.lang.String readNullableString()
Specified by:
readNullableString in interface MessagingBuffer

readSimpleString

public SimpleString readSimpleString()
Specified by:
readSimpleString in interface MessagingBuffer

readString

public java.lang.String readString()
Specified by:
readString in interface MessagingBuffer

readUTF

public java.lang.String readUTF()
                         throws java.lang.Exception
Specified by:
readUTF in interface MessagingBuffer
Throws:
java.lang.Exception

writeBoolean

public void writeBoolean(boolean val)
Specified by:
writeBoolean in interface MessagingBuffer

writeChar

public void writeChar(char val)
Specified by:
writeChar in interface MessagingBuffer

writeDouble

public void writeDouble(double val)
Specified by:
writeDouble in interface MessagingBuffer

writeFloat

public void writeFloat(float val)
Specified by:
writeFloat in interface MessagingBuffer

writeNullableSimpleString

public void writeNullableSimpleString(SimpleString val)
Specified by:
writeNullableSimpleString in interface MessagingBuffer

writeNullableString

public void writeNullableString(java.lang.String val)
Specified by:
writeNullableString in interface MessagingBuffer

writeSimpleString

public void writeSimpleString(SimpleString val)
Specified by:
writeSimpleString in interface MessagingBuffer

writeString

public void writeString(java.lang.String val)
Specified by:
writeString in interface MessagingBuffer

writeUTF

public void writeUTF(java.lang.String utf)
              throws java.lang.Exception
Specified by:
writeUTF in interface MessagingBuffer
Throws:
java.lang.Exception

compareTo

public int compareTo(ChannelBuffer buffer)
Description copied from interface: ChannelBuffer
Compares the content of the specified buffer to the content of this buffer. Comparison is performed in the same manner with the string comparison functions of various languages such as strcmp, memcmp and String.compareTo(String).

Specified by:
compareTo in interface java.lang.Comparable<ChannelBuffer>
Specified by:
compareTo in interface ChannelBuffer


Copyright © 2006 JBoss Inc. All Rights Reserved.