Package org.jboss.netty.buffer
Class DynamicChannelBuffer
java.lang.Object
org.jboss.netty.buffer.AbstractChannelBuffer
org.jboss.netty.buffer.DynamicChannelBuffer
- All Implemented Interfaces:
Comparable<ChannelBuffer>,ChannelBuffer
A dynamic capacity buffer which increases its capacity as needed. It is
recommended to use
ChannelBuffers.dynamicBuffer(int) instead of
calling the constructor explicitly.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ChannelBufferprivate final ByteOrderprivate final ChannelBufferFactory -
Constructor Summary
ConstructorsConstructorDescriptionDynamicChannelBuffer(int estimatedLength) DynamicChannelBuffer(ByteOrder endianness, int estimatedLength) DynamicChannelBuffer(ByteOrder endianness, int estimatedLength, ChannelBufferFactory factory) -
Method Summary
Modifier and TypeMethodDescriptionbyte[]array()Returns the backing byte array of this buffer.intReturns the offset of the first byte within the backing byte array of this buffer.intcapacity()Returns the number of bytes (octets) this buffer can contain.copy(int index, int length) Returns a copy of this buffer's sub-region.Returns a buffer which shares the whole region of this buffer.voidensureWritableBytes(int minWritableBytes) Makes sure the number of the writable bytes is equal to or greater than the specified value.factory()Returns the factory which creates aChannelBufferwhose type and defaultByteOrderare same with this buffer.bytegetByte(int index) Gets a byte at the specified absoluteindexin this buffer.voidgetBytes(int index, byte[] dst, int dstIndex, int length) Transfers this buffer's data to the specified destination starting at the specified absoluteindex.voidgetBytes(int index, OutputStream out, int length) Transfers this buffer's data to the specified stream starting at the specified absoluteindex.voidgetBytes(int index, ByteBuffer dst) Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination's position reaches its limit.intgetBytes(int index, GatheringByteChannel out, int length) Transfers this buffer's data to the specified channel starting at the specified absoluteindex.voidgetBytes(int index, ChannelBuffer dst, int dstIndex, int length) Transfers this buffer's data to the specified destination starting at the specified absoluteindex.intgetInt(int index) Gets a 32-bit integer at the specified absoluteindexin this buffer.longgetLong(int index) Gets a 64-bit long integer at the specified absoluteindexin this buffer.shortgetShort(int index) Gets a 16-bit short integer at the specified absoluteindexin this buffer.intgetUnsignedMedium(int index) Gets an unsigned 24-bit medium integer at the specified absoluteindexin this buffer.booleanhasArray()Returnstrueif and only if this buffer has a backing byte array.booleanisDirect()Returnstrueif and only if this buffer is backed by an NIO direct buffer.order()Returns the endianness of this buffer.voidsetByte(int index, int value) Sets the specified byte at the specified absoluteindexin this buffer.voidsetBytes(int index, byte[] src, int srcIndex, int length) Transfers the specified source array's data to this buffer starting at the specified absoluteindex.intsetBytes(int index, InputStream in, int length) Transfers the content of the specified source stream to this buffer starting at the specified absoluteindex.voidsetBytes(int index, ByteBuffer src) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer's position reaches its limit.intsetBytes(int index, ScatteringByteChannel in, int length) Transfers the content of the specified source channel to this buffer starting at the specified absoluteindex.voidsetBytes(int index, ChannelBuffer src, int srcIndex, int length) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex.voidsetInt(int index, int value) Sets the specified 32-bit integer at the specified absoluteindexin this buffer.voidsetLong(int index, long value) Sets the specified 64-bit long integer at the specified absoluteindexin this buffer.voidsetMedium(int index, int value) Sets the specified 24-bit medium integer at the specified absoluteindexin this buffer.voidsetShort(int index, int value) Sets the specified 16-bit short integer at the specified absoluteindexin this buffer.slice(int index, int length) Returns a slice of this buffer's sub-region.toByteBuffer(int index, int length) Converts this buffer's sub-region into a NIO buffer.voidwriteByte(int value) Sets the specified byte at the currentwriterIndexand increases thewriterIndexby1in this buffer.voidwriteBytes(byte[] src, int srcIndex, int length) Transfers the specified source array's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).intwriteBytes(InputStream in, int length) Transfers the content of the specified stream to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.voidwriteBytes(ByteBuffer src) Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexuntil the source buffer's position reaches its limit, and increases thewriterIndexby the number of the transferred bytes.intwriteBytes(ScatteringByteChannel in, int length) Transfers the content of the specified channel to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.voidwriteBytes(ChannelBuffer src, int srcIndex, int length) Transfers the specified source buffer's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).voidwriteInt(int value) Sets the specified 32-bit integer at the currentwriterIndexand increases thewriterIndexby4in this buffer.voidwriteLong(long value) Sets the specified 64-bit long integer at the currentwriterIndexand increases thewriterIndexby8in this buffer.voidwriteMedium(int value) Sets the specified 24-bit medium integer at the currentwriterIndexand increases thewriterIndexby3in this buffer.voidwriteShort(int value) Sets the specified 16-bit short integer at the currentwriterIndexand increases thewriterIndexby2in this buffer.voidwriteZero(int length) Fills this buffer with NUL (0x00) starting at the currentwriterIndexand increases thewriterIndexby the specifiedlength.Methods inherited from class org.jboss.netty.buffer.AbstractChannelBuffer
bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, checkReadableBytes, clear, compareTo, copy, discardReadBytes, equals, getBytes, getBytes, getBytes, getChar, getDouble, getFloat, getMedium, getUnsignedByte, getUnsignedInt, getUnsignedShort, hashCode, indexOf, indexOf, markReaderIndex, markWriterIndex, readable, readableBytes, readByte, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readBytes, readChar, readDouble, readerIndex, readerIndex, readFloat, readInt, readLong, readMedium, readShort, readSlice, readUnsignedByte, readUnsignedInt, readUnsignedMedium, readUnsignedShort, resetReaderIndex, resetWriterIndex, setBytes, setBytes, setBytes, setChar, setDouble, setFloat, setIndex, setZero, skipBytes, slice, toByteBuffer, toByteBuffers, toByteBuffers, toString, toString, toString, writable, writableBytes, writeBytes, writeBytes, writeBytes, writeChar, writeDouble, writeFloat, writerIndex, writerIndex
-
Field Details
-
factory
-
endianness
-
buffer
-
-
Constructor Details
-
DynamicChannelBuffer
public DynamicChannelBuffer(int estimatedLength) -
DynamicChannelBuffer
-
DynamicChannelBuffer
public DynamicChannelBuffer(ByteOrder endianness, int estimatedLength, ChannelBufferFactory factory)
-
-
Method Details
-
ensureWritableBytes
public void ensureWritableBytes(int minWritableBytes) Description copied from interface:ChannelBufferMakes sure the number of the writable bytes is equal to or greater than the specified value. If there is enough writable bytes in this buffer, this method returns with no side effect. Otherwise:- a non-dynamic buffer will throw an
IndexOutOfBoundsException. - a dynamic buffer will expand its capacity so that the number of the
writable bytesbecomes equal to or greater than the specified value. The expansion involves the reallocation of the internal buffer and consequently memory copy.
- Specified by:
ensureWritableBytesin interfaceChannelBuffer- Overrides:
ensureWritableBytesin classAbstractChannelBuffer- Parameters:
minWritableBytes- the expected minimum number of writable bytes
- a non-dynamic buffer will throw an
-
factory
Description copied from interface:ChannelBufferReturns the factory which creates aChannelBufferwhose type and defaultByteOrderare same with this buffer. -
order
Description copied from interface:ChannelBufferReturns the endianness of this buffer. -
isDirect
public boolean isDirect()Description copied from interface:ChannelBufferReturnstrueif and only if this buffer is backed by an NIO direct buffer. -
capacity
public int capacity()Description copied from interface:ChannelBufferReturns the number of bytes (octets) this buffer can contain. -
hasArray
public boolean hasArray()Description copied from interface:ChannelBufferReturnstrueif and only if this buffer has a backing byte array. If this method returns true, you can safely callChannelBuffer.array()andChannelBuffer.arrayOffset(). -
array
public byte[] array()Description copied from interface:ChannelBufferReturns the backing byte array of this buffer. -
arrayOffset
public int arrayOffset()Description copied from interface:ChannelBufferReturns the offset of the first byte within the backing byte array of this buffer. -
getByte
public byte getByte(int index) Description copied from interface:ChannelBufferGets a byte at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
getShort
public short getShort(int index) Description copied from interface:ChannelBufferGets a 16-bit short integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
getUnsignedMedium
public int getUnsignedMedium(int index) Description copied from interface:ChannelBufferGets an unsigned 24-bit medium integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
getInt
public int getInt(int index) Description copied from interface:ChannelBufferGets a 32-bit integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
getLong
public long getLong(int index) Description copied from interface:ChannelBufferGets a 64-bit long integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
getBytes
public void getBytes(int index, byte[] dst, int dstIndex, int length) Description copied from interface:ChannelBufferTransfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
dstIndex- the first index of the destinationlength- the number of bytes to transfer
-
getBytes
Description copied from interface:ChannelBufferTransfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof both the source (i.e.this) and the destination.- Parameters:
dstIndex- the first index of the destinationlength- the number of bytes to transfer
-
getBytes
Description copied from interface:ChannelBufferTransfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination's position reaches its limit. This method does not modifyreaderIndexorwriterIndexof this buffer while the destination'spositionwill be increased. -
getBytes
Description copied from interface:ChannelBufferTransfers this buffer's data to the specified channel starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the maximum number of bytes to transfer- Returns:
- the actual number of bytes written out to the specified channel
- Throws:
IOException- if the specified channel threw an exception during I/O
-
getBytes
Description copied from interface:ChannelBufferTransfers this buffer's data to the specified stream starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the number of bytes to transfer- Throws:
IOException- if the specified stream threw an exception during I/O
-
setByte
public void setByte(int index, int value) Description copied from interface:ChannelBufferSets the specified byte at the specified absoluteindexin this buffer. The 24 high-order bits of the specified value are ignored. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setShort
public void setShort(int index, int value) Description copied from interface:ChannelBufferSets the specified 16-bit short integer at the specified absoluteindexin this buffer. The 16 high-order bits of the specified value are ignored. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setMedium
public void setMedium(int index, int value) Description copied from interface:ChannelBufferSets the specified 24-bit medium integer at the specified absoluteindexin this buffer. Please note that the most significant byte is ignored in the specified value. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setInt
public void setInt(int index, int value) Description copied from interface:ChannelBufferSets the specified 32-bit integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setLong
public void setLong(int index, long value) Description copied from interface:ChannelBufferSets the specified 64-bit long integer at the specified absoluteindexin this buffer. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setBytes
public void setBytes(int index, byte[] src, int srcIndex, int length) Description copied from interface:ChannelBufferTransfers the specified source array's data to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setBytes
Description copied from interface:ChannelBufferTransfers the specified source buffer's data to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof both the source (i.e.this) and the destination.- Parameters:
srcIndex- the first index of the sourcelength- the number of bytes to transfer
-
setBytes
Description copied from interface:ChannelBufferTransfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer's position reaches its limit. This method does not modifyreaderIndexorwriterIndexof this buffer. -
setBytes
Description copied from interface:ChannelBufferTransfers the content of the specified source stream to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1if the specified channel is closed. - Throws:
IOException- if the specified stream threw an exception during I/O
-
setBytes
Description copied from interface:ChannelBufferTransfers the content of the specified source channel to this buffer starting at the specified absoluteindex. This method does not modifyreaderIndexorwriterIndexof this buffer.- Parameters:
length- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel.
-1if the specified channel is closed. - Throws:
IOException- if the specified channel threw an exception during I/O
-
writeByte
public void writeByte(int value) Description copied from interface:ChannelBufferSets the specified byte at the currentwriterIndexand increases thewriterIndexby1in this buffer. The 24 high-order bits of the specified value are ignored.- Specified by:
writeBytein interfaceChannelBuffer- Overrides:
writeBytein classAbstractChannelBuffer
-
writeShort
public void writeShort(int value) Description copied from interface:ChannelBufferSets the specified 16-bit short integer at the currentwriterIndexand increases thewriterIndexby2in this buffer. The 16 high-order bits of the specified value are ignored.- Specified by:
writeShortin interfaceChannelBuffer- Overrides:
writeShortin classAbstractChannelBuffer
-
writeMedium
public void writeMedium(int value) Description copied from interface:ChannelBufferSets the specified 24-bit medium integer at the currentwriterIndexand increases thewriterIndexby3in this buffer.- Specified by:
writeMediumin interfaceChannelBuffer- Overrides:
writeMediumin classAbstractChannelBuffer
-
writeInt
public void writeInt(int value) Description copied from interface:ChannelBufferSets the specified 32-bit integer at the currentwriterIndexand increases thewriterIndexby4in this buffer.- Specified by:
writeIntin interfaceChannelBuffer- Overrides:
writeIntin classAbstractChannelBuffer
-
writeLong
public void writeLong(long value) Description copied from interface:ChannelBufferSets the specified 64-bit long integer at the currentwriterIndexand increases thewriterIndexby8in this buffer.- Specified by:
writeLongin interfaceChannelBuffer- Overrides:
writeLongin classAbstractChannelBuffer
-
writeBytes
public void writeBytes(byte[] src, int srcIndex, int length) Description copied from interface:ChannelBufferTransfers the specified source array's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).- Specified by:
writeBytesin interfaceChannelBuffer- Overrides:
writeBytesin classAbstractChannelBuffer- Parameters:
srcIndex- the first index of the sourcelength- the number of bytes to transfer
-
writeBytes
Description copied from interface:ChannelBufferTransfers the specified source buffer's data to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes (=length).- Specified by:
writeBytesin interfaceChannelBuffer- Overrides:
writeBytesin classAbstractChannelBuffer- Parameters:
srcIndex- the first index of the sourcelength- the number of bytes to transfer
-
writeBytes
Description copied from interface:ChannelBufferTransfers the specified source buffer's data to this buffer starting at the currentwriterIndexuntil the source buffer's position reaches its limit, and increases thewriterIndexby the number of the transferred bytes.- Specified by:
writeBytesin interfaceChannelBuffer- Overrides:
writeBytesin classAbstractChannelBuffer
-
writeBytes
Description copied from interface:ChannelBufferTransfers the content of the specified stream to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.- Specified by:
writeBytesin interfaceChannelBuffer- Overrides:
writeBytesin classAbstractChannelBuffer- Parameters:
length- the number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified stream
- Throws:
IOException- if the specified stream threw an exception during I/O
-
writeBytes
Description copied from interface:ChannelBufferTransfers the content of the specified channel to this buffer starting at the currentwriterIndexand increases thewriterIndexby the number of the transferred bytes.- Specified by:
writeBytesin interfaceChannelBuffer- Overrides:
writeBytesin classAbstractChannelBuffer- Parameters:
length- the maximum number of bytes to transfer- Returns:
- the actual number of bytes read in from the specified channel
- Throws:
IOException- if the specified channel threw an exception during I/O
-
writeZero
public void writeZero(int length) Description copied from interface:ChannelBufferFills this buffer with NUL (0x00) starting at the currentwriterIndexand increases thewriterIndexby the specifiedlength.- Specified by:
writeZeroin interfaceChannelBuffer- Overrides:
writeZeroin classAbstractChannelBuffer- Parameters:
length- the number of NULs to write to the buffer
-
duplicate
Description copied from interface:ChannelBufferReturns a buffer which shares the whole region of this buffer. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method is identical tobuf.slice(0, buf.capacity()). This method does not modifyreaderIndexorwriterIndexof this buffer. -
copy
Description copied from interface:ChannelBufferReturns 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 modifyreaderIndexorwriterIndexof this buffer. -
slice
Description copied from interface:ChannelBufferReturns a slice of this buffer's sub-region. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks. This method does not modifyreaderIndexorwriterIndexof this buffer. -
toByteBuffer
Description copied from interface:ChannelBufferConverts 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 modifyreaderIndexorwriterIndexof this buffer.
-