Class InByteBuffer

java.lang.Object
org.jibx.runtime.impl.InByteBuffer
All Implemented Interfaces:
IByteBuffer, IInByteBuffer

public class InByteBuffer extends Object implements IInByteBuffer
Byte buffer wrapping an input 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 input buffer size.
    private byte[]
    Buffer for input bytes.
    private boolean
    Flag for end of stream reached.
    private int
    Offset past end of bytes in buffer.
    private int
    Current offset for removing bytes from buffer.
    private InputStream
    Stream for byte input.
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    private boolean
    fillBuffer(int size)
    Read data into the buffer to assure at least a minimum number of bytes are available.
    void
    Complete usage of the current stream.
    byte[]
    Get the byte array buffer.
    int
    Get offset past the end of data in buffer.
    int
    Get the index of the next byte to be read.
    boolean
    require(int size)
    Require some number of bytes of data.
    void
    Reset to initial state for reuse.
    void
    Set the actual input stream to be used for this buffer.
    void
    setOffset(int offset)
    Set the current offset.

    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 input buffer size.
      See Also:
    • m_stream

      private InputStream m_stream
      Stream for byte input.
    • m_isEnd

      private boolean m_isEnd
      Flag for end of stream reached.
    • m_buffer

      private byte[] m_buffer
      Buffer for input bytes.
    • m_limit

      private int m_limit
      Offset past end of bytes in buffer.
    • m_offset

      private int m_offset
      Current offset for removing bytes from buffer.
  • Constructor Details

    • InByteBuffer

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

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

    • fillBuffer

      private boolean fillBuffer(int size) throws IOException
      Read data into the buffer to assure at least a minimum number of bytes are available. Any retained data is first copied down to the start of the buffer array. Next, data is read from the wrapped stream into the available space in the buffer. The actual number of characters read by a call to this method is normally between one and the space available in the buffer array.
      Parameters:
      size - minimum number of bytes required
      Returns:
      true if data has been read into buffer, false if not
      Throws:
      IOException - on error reading from wrapped stream
    • reset

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

      public void setInput(InputStream is)
      Set the actual input stream to be used for this buffer. If an input stream is currently open when this is called the existing stream is closed and any buffered data discarded, with any errors ignored.
      Parameters:
      is - 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 -
    • getLimit

      public int getLimit()
      Get offset past the end of data in buffer.
      Specified by:
      getLimit in interface IInByteBuffer
      Returns:
      offset past end of data
    • require

      public boolean require(int size) throws IOException
      Require some number of bytes of data. When this call is made the buffer can discard all data up to the current offset, and will copy retained data down to the start of the buffer array and read more data from the input stream if necessary to make the requested number of bytes available. This call may cause the byte array buffer to be replaced, so getBuffer(), getLimit(), and getOffset() must all be called again before any further use of the buffer.
      Specified by:
      require in interface IInByteBuffer
      Parameters:
      size - desired number of bytes
      Returns:
      true if request satisfied, false if not
      Throws:
      IOException
    • finish

      public void finish() throws IOException
      Complete usage of the current stream. This method should be called whenever the application is done reading from the buffered stream. Once this method is called, a call to setInput(InputStream) is required before the buffer can again be used.
      Specified by:
      finish in interface IByteBuffer
      Throws:
      IOException