Interface ByteHolder

All Known Implementing Classes:
MemByteHolder

public interface ByteHolder
Holder for a growing sequence of bytes. The ByteHolder supports a writing phase in which a caller appends bytes to the ByteHolder. Later the caller may read the bytes out of the ByteHolder in the order they were written.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Return the number of bytes that can be read from this ByteHolder without blocking on an IO.
    void
    Clear the bytes from the ByteHolder and place it in writing mode.
    Return a byte holder matching existing type and size of current ByteHolder, but don't bother to fill the bytes.
    int
    Return the number of bytes that have been saved to this byte holder.
    int
    Read a byte from this ByteHolder.
    int
    read(byte[] b, int off, int len)
    Read up to 'len' bytes from this ByteHolder and store them in an array at offset 'off'.
    int
    read(OutputStream out, int len)
    Read from the ByteHolder.
    int
    shift the remaining unread bytes to the beginning of the byte holder
    long
    skip(long count)
    Skip over the specified number of bytes in a ByteHolder.
    void
    Place a ByteHolder in reading mode.
    void
    write(byte[] data, int offset, int len)
    Write len bytes of data starting at 'offset' to this ByteHolder.
    void
    write(int b)
    Write a byte to this ByteHolder.
    long
    write(InputStream in, long count)
    Write up to count bytes from an input stream to this ByteHolder.
    boolean
    Return true if this is in writing mode.
  • Method Details

    • write

      void write(int b) throws IOException
      Write a byte to this ByteHolder.

      The ByteHolder must be in writing mode to call this.

      Throws:
      IOException
    • write

      void write(byte[] data, int offset, int len) throws IOException
      Write len bytes of data starting at 'offset' to this ByteHolder.

      The ByteHolder must be in writing mode to call this.

      Throws:
      IOException
    • write

      long write(InputStream in, long count) throws IOException
      Write up to count bytes from an input stream to this ByteHolder. This may write fewer bytes if it encounters an end of file on the input stream.
      Returns:
      the number of bytes written.
      Throws:
      IOException - thrown when reading in causes an error.
    • clear

      void clear() throws IOException
      Clear the bytes from the ByteHolder and place it in writing mode. This may not free the memory the ByteHolder uses to store data.
      Throws:
      IOException
    • startReading

      void startReading() throws IOException
      Place a ByteHolder in reading mode. After this call, reads scan bytes sequentially in the order they were written to the ByteHolder starting from the first byte. When the ByteHolder is already in readmode this simply arranges for reads to start at the beginning of the sequence of saved bytes.
      Throws:
      IOException
    • read

      int read() throws IOException
      Read a byte from this ByteHolder.

      The ByteHolder must be in reading mode to call this.

      Returns:
      The byte or -1 if there are no bytes available.
      Throws:
      IOException
    • read

      int read(byte[] b, int off, int len) throws IOException
      Read up to 'len' bytes from this ByteHolder and store them in an array at offset 'off'.

      The ByteHolder must be in reading mode to call this.

      Returns:
      the number of bytes read or -1 if the this ByteHolder has no more bytes.
      Throws:
      IOException
    • read

      int read(OutputStream out, int len) throws IOException
      Read from the ByteHolder.

      Read up to 'len' bytes from this ByteHolder and write them to the OutputStream

      The ByteHolder must be in reading mode to call this.

      Returns:
      the number of bytes read or -1 if the this ByteHolder has no more bytes.
      Throws:
      IOException
    • shiftToFront

      int shiftToFront() throws IOException
      shift the remaining unread bytes to the beginning of the byte holder
      Throws:
      IOException
    • available

      int available() throws IOException
      Return the number of bytes that can be read from this ByteHolder without blocking on an IO.
      Throws:
      IOException
    • numBytesSaved

      int numBytesSaved() throws IOException
      Return the number of bytes that have been saved to this byte holder. This result is different from available() as it is unaffected by the current read position on the ByteHolder.
      Throws:
      IOException
    • skip

      long skip(long count) throws IOException
      Skip over the specified number of bytes in a ByteHolder.
      Throws:
      IOException
    • writingMode

      boolean writingMode()
      Return true if this is in writing mode.
    • cloneEmpty

      ByteHolder cloneEmpty()
      Return a byte holder matching existing type and size of current ByteHolder, but don't bother to fill the bytes. Normal usage is expected to reset the holding stream to the beginning, so the copy of current state would be wasted.
      Returns:
      An empty ByteHolder.