Package org.apache.mina.util.byteaccess
Class CompositeByteArrayRelativeWriter
- java.lang.Object
-
- org.apache.mina.util.byteaccess.CompositeByteArrayRelativeWriter
-
- All Implemented Interfaces:
IoRelativeWriter
public class CompositeByteArrayRelativeWriter extends Object implements IoRelativeWriter
Provides restricted, relative, write-only access to the bytes in aCompositeByteArray. Using this interface has the advantage that it can be automatically determined when a componentByteArraycan no longer be written to, and thus components can be automatically flushed. This makes it easier to use pooling for underlyingByteArrays. By providing an appropriateExpanderit is also possible to automatically add more backing storage as more data is written.
TODO: Get flushing working.- Author:
- Apache MINA Project
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCompositeByteArrayRelativeWriter.ChunkedExpanderExpands the suppliedCompositeByteArrayby the number of bytes provided in the constructorstatic interfaceCompositeByteArrayRelativeWriter.ExpanderAn object that knows how to expand aCompositeByteArray.static interfaceCompositeByteArrayRelativeWriter.FlusherAn object that knows how to flush aByteArray.static classCompositeByteArrayRelativeWriter.NopExpanderNo-op expander.
-
Field Summary
Fields Modifier and Type Field Description protected CompositeByteArraycbaThe underlyingCompositeByteArray.protected ByteArray.CursorcursorA cursor of the underlyingCompositeByteArray.
-
Constructor Summary
Constructors Constructor Description CompositeByteArrayRelativeWriter(CompositeByteArray cba, CompositeByteArrayRelativeWriter.Expander expander, CompositeByteArrayRelativeWriter.Flusher flusher, boolean autoFlush)Creates a new instance of CompositeByteArrayRelativeWriter.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidappend(ByteArray ba)Make aByteArrayavailable for access at the end of this object.protected voidcursorPassedFirstComponent()Called whenever the cursor has passed from thecba's first component.voidflush()Flush to the current index.voidflushTo(int index)Flush to the given index.voidfree()Free all resources associated with this object.intgetIndex()intgetRemaining()booleanhasRemaining()intlast()ByteOrderorder()voidput(byte b)Puts abyteand advances the reader.voidput(IoBuffer bb)Puts enough bytes to fill theIoBufferand advances the reader.voidputChar(char c)Puts acharand advances the reader.voidputDouble(double d)Puts adoubleand advances the reader.voidputFloat(float f)Puts afloatand advances the reader.voidputInt(int i)Puts anintand advances the reader.voidputLong(long l)Puts alongand advances the reader.voidputShort(short s)Puts ashortand advances the reader.voidskip(int length)Advances the writer by the given number of bytes.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.mina.util.byteaccess.IoRelativeWriter
getRemaining, hasRemaining, order
-
-
-
-
Field Detail
-
cba
protected final CompositeByteArray cba
The underlyingCompositeByteArray.
-
cursor
protected final ByteArray.Cursor cursor
A cursor of the underlyingCompositeByteArray. This cursor is never moved directly; its position only changes through calls to relative read or write methods.
-
-
Constructor Detail
-
CompositeByteArrayRelativeWriter
public CompositeByteArrayRelativeWriter(CompositeByteArray cba, CompositeByteArrayRelativeWriter.Expander expander, CompositeByteArrayRelativeWriter.Flusher flusher, boolean autoFlush)
Creates a new instance of CompositeByteArrayRelativeWriter.- Parameters:
cba- The CompositeByteArray to use to back this classexpander- The expander. Will increase the size of the internal ByteArrayflusher- Flushed the ByteArray when necessaryautoFlush- Should this class automatically flush?
-
-
Method Detail
-
flush
public void flush()
Flush to the current index.
-
flushTo
public void flushTo(int index)
Flush to the given index.- Parameters:
index- The end position
-
skip
public void skip(int length)
Advances the writer by the given number of bytes.- Specified by:
skipin interfaceIoRelativeWriter- Parameters:
length- The number of bytes to skip
-
cursorPassedFirstComponent
protected void cursorPassedFirstComponent()
Called whenever the cursor has passed from thecba's first component. As the first component is no longer used, this provides a good opportunity for subclasses to perform some action on it (such as freeing it).
-
put
public void put(byte b)
Puts abyteand advances the reader.- Specified by:
putin interfaceIoRelativeWriter- Parameters:
b- The byte to put
-
put
public void put(IoBuffer bb)
Puts enough bytes to fill theIoBufferand advances the reader.- Specified by:
putin interfaceIoRelativeWriter- Parameters:
bb- The bytes to put
-
putShort
public void putShort(short s)
Puts ashortand advances the reader.- Specified by:
putShortin interfaceIoRelativeWriter- Parameters:
s- The short to put
-
putInt
public void putInt(int i)
Puts anintand advances the reader.- Specified by:
putIntin interfaceIoRelativeWriter- Parameters:
i- The int to put
-
putLong
public void putLong(long l)
Puts alongand advances the reader.- Specified by:
putLongin interfaceIoRelativeWriter- Parameters:
l- The long to put
-
putFloat
public void putFloat(float f)
Puts afloatand advances the reader.- Specified by:
putFloatin interfaceIoRelativeWriter- Parameters:
f- The float to put
-
putDouble
public void putDouble(double d)
Puts adoubleand advances the reader.- Specified by:
putDoublein interfaceIoRelativeWriter- Parameters:
d- The double to put
-
putChar
public void putChar(char c)
Puts acharand advances the reader.- Specified by:
putCharin interfaceIoRelativeWriter- Parameters:
c- The char to put
-
getRemaining
public final int getRemaining()
- Returns:
- The number of remaining bytes
-
hasRemaining
public final boolean hasRemaining()
- Returns:
- TRUE if there are some more bytes
-
order
public ByteOrder order()
- Returns:
- The used byte order (little of big indian)
-
append
public final void append(ByteArray ba)
Make aByteArrayavailable for access at the end of this object.- Parameters:
ba- The ByteArray to append
-
free
public final void free()
Free all resources associated with this object.
-
getIndex
public final int getIndex()
- Returns:
- the index that will be used for the next access.
-
last
public final int last()
- Returns:
- the index after the last byte that can be accessed.
-
-