Class OutByteBuffer

java.lang.Object
org.jibx.runtime.impl.OutByteBuffer
All Implemented Interfaces:
IByteBuffer, IOutByteBuffer

public class OutByteBuffer extends 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 final int
    Default output buffer size.
    private byte[]
    Buffer for output bytes.
    private int
    Current offset for adding bytes to buffer.
    private OutputStream
    Stream for byte output.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor using default buffer size.
    OutByteBuffer(int size)
    Constructor with size specified.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Complete usage of the current stream.
    void
    Empty the buffer.
    void
    free(int reserve, int size)
    Free at least some number of bytes of space in the byte array.
    byte[]
    Get the byte array buffer.
    int
    Get the index of the next byte to be read.
    void
    Reset to initial state for reuse.
    void
    setOffset(int offset)
    Set the current offset.
    void
    Set output stream.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DEFAULT_BUFFER_SIZE

      public static final int DEFAULT_BUFFER_SIZE
      Default output buffer size.
      See Also:
    • m_stream

      private 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.
  • Constructor Details

    • OutByteBuffer

      public OutByteBuffer(int size)
      Constructor with size specified.
      Parameters:
      size - initial buffer size in bytes
    • OutByteBuffer

      public OutByteBuffer()
      Constructor using default buffer size.
  • Method Details

    • reset

      public void reset()
      Reset to initial state for reuse.
    • setOutput

      public void setOutput(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 interface IByteBuffer
      Returns:
      array
    • getOffset

      public int getOffset()
      Get the index of the next byte to be read. After reading data, the setOffset(int) method must be used to update the current offset before any other operations are performed on the buffer.
      Specified by:
      getOffset in interface IByteBuffer
      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 interface IByteBuffer
      Parameters:
      offset -
    • free

      public void free(int reserve, int size) throws 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. Both getBuffer() and IByteBuffer.getOffset() must always be called again before any further use of the buffer.
      Specified by:
      free in interface IOutByteBuffer
      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:
      IOException
    • flush

      public void flush() throws 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 interface IOutByteBuffer
      Throws:
      IOException
    • finish

      public void finish() throws 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 to setOutput(OutputStream) is required before the buffer can again be used.
      Specified by:
      finish in interface IByteBuffer
      Throws:
      IOException