Package org.jibx.runtime.impl
Class OutByteBuffer
- java.lang.Object
-
- org.jibx.runtime.impl.OutByteBuffer
-
- All Implemented Interfaces:
IByteBuffer
,IOutByteBuffer
public class OutByteBuffer extends java.lang.Object implements IOutByteBuffer
Byte buffer wrapping an output stream. Clients need to obey the interface access rules.- Author:
- Dennis M. Sosnoski
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_BUFFER_SIZE
Default output buffer size.private byte[]
m_buffer
Buffer for output bytes.private int
m_offset
Current offset for adding bytes to buffer.private java.io.OutputStream
m_stream
Stream for byte output.
-
Constructor Summary
Constructors Constructor Description OutByteBuffer()
Constructor using default buffer size.OutByteBuffer(int size)
Constructor with size specified.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
finish()
Complete usage of the current stream.void
flush()
Empty the buffer.void
free(int reserve, int size)
Free at least some number of bytes of space in the byte array.byte[]
getBuffer()
Get the byte array buffer.int
getOffset()
Get the index of the next byte to be read.void
reset()
Reset to initial state for reuse.void
setOffset(int offset)
Set the current offset.void
setOutput(java.io.OutputStream os)
Set output stream.
-
-
-
Field Detail
-
DEFAULT_BUFFER_SIZE
public static final int DEFAULT_BUFFER_SIZE
Default output buffer size.- See Also:
- Constant Field Values
-
m_stream
private java.io.OutputStream m_stream
Stream for byte output.
-
m_buffer
private byte[] m_buffer
Buffer for output bytes.
-
m_offset
private int m_offset
Current offset for adding bytes to buffer.
-
-
Method Detail
-
reset
public void reset()
Reset to initial state for reuse.
-
setOutput
public void setOutput(java.io.OutputStream os)
Set output stream. If an output stream is currently open when this is called the existing stream is flushed and closed, with any errors ignored.- Parameters:
os
- stream
-
getBuffer
public byte[] getBuffer()
Get the byte array buffer.- Specified by:
getBuffer
in interfaceIByteBuffer
- Returns:
- array
-
getOffset
public int getOffset()
Get the index of the next byte to be read. After reading data, thesetOffset(int)
method must be used to update the current offset before any other operations are performed on the buffer.- Specified by:
getOffset
in interfaceIByteBuffer
- Returns:
- offset
-
setOffset
public void setOffset(int offset)
Set the current offset. This must be used to update the stored buffer state after reading any data.- Specified by:
setOffset
in interfaceIByteBuffer
- Parameters:
offset
-
-
free
public void free(int reserve, int size) throws java.io.IOException
Free at least some number of bytes of space in the byte array. If no reserve is specified, this call may write all data up to the current offset to the output stream, and if necessary will replace the byte array with a larger array. If a reserve is specified, only data up to the reserve will be written, and any remaining data will be moved down to the start of the (possibly new) byte array on return. BothgetBuffer()
andIByteBuffer.getOffset()
must always be called again before any further use of the buffer.- Specified by:
free
in interfaceIOutByteBuffer
- Parameters:
reserve
- offset of data to be preserved in buffer (nothing preserved if greater than or equal to current offset)size
- desired number of bytes- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
Empty the buffer. Writes all data from the buffer to the output stream, resetting the offset to the start of the buffer.- Specified by:
flush
in interfaceIOutByteBuffer
- Throws:
java.io.IOException
-
finish
public void finish() throws java.io.IOException
Complete usage of the current stream. This method should be called whenever the application is done writing to the buffered stream. Once this method is called, a call tosetOutput(OutputStream)
is required before the buffer can again be used.- Specified by:
finish
in interfaceIByteBuffer
- Throws:
java.io.IOException
-
-