Class MultiByteArrayOutputStream

java.lang.Object
java.io.OutputStream
com.tangosol.io.MultiByteArrayOutputStream
All Implemented Interfaces:
com.oracle.coherence.common.io.OutputStreaming, OutputStreaming, Closeable, Flushable, AutoCloseable

public class MultiByteArrayOutputStream extends OutputStream implements OutputStreaming
An OutputStream that accumulates the written data to a series of byte arrays that do not exceed a specified size.
Author:
cp 2001.11.13
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected byte[]
    The current block of output.
    protected int
    The max size of each block.
    protected int
    The number of flushed blocks.
    protected int
    The number of additional bytes to allocate and leave free at the back (end) of each block
    protected int
    The number of additional bytes to allocate and leave free at the front (start) of each block
    protected boolean
    True after close is invoked.
    protected List
    The list of blocks.
    protected int
    The offset into the current block of output.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Construct a MultiByteArrayOutputStream to write to byte arrays of the specified length.
    MultiByteArrayOutputStream(int cbBlock, int cbPadFront, int cbPadBack)
    Construct a MultiByteArrayOutputStream to write to byte arrays of the specified length, leaving the specified amount of padding at the front and back of each byte array.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Verify that the stream is still open.
    void
    Close the stream, flushing any accumulated bytes.
    void
    Flush any accumulated bytes.
    int
    Determine the number of extra bytes of padding that will be allocated and left blank at the end of each block after the data portion.
    byte[]
    getBlock(int i)
    Obtain the specified block of data.
    int
    Determine the number of blocks that have been written thus far.
    int
    Determine the maximum number of bytes of data that will be stored in each block.
    int
    Determine the specific number of bytes of data stored in the specified block.
    int
    Determine the number of extra bytes of padding that will be allocated and left blank at the start of each block in front of the data portion.
    protected int
    requestCapacity(int cbMore)
    Ensure that the current block contains some available capacity, preferably enough to fulfill the specified capacity.
    Create a human readable string representing the data written to the stream.
    void
    write(byte[] abSrc, int ofSrc, int cbSrc)
    Writes len bytes from the specified byte array starting at offset off to this output stream.
    void
    write(int b)
    Writes the specified byte to this output stream.

    Methods inherited from class java.io.OutputStream

    nullOutputStream, write

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface com.oracle.coherence.common.io.OutputStreaming

    write
  • Field Details

    • m_ab

      protected byte[] m_ab
      The current block of output.
    • m_of

      protected int m_of
      The offset into the current block of output.
    • m_cbBlock

      protected int m_cbBlock
      The max size of each block.
    • m_cbPadFront

      protected int m_cbPadFront
      The number of additional bytes to allocate and leave free at the front (start) of each block
    • m_cbPadBack

      protected int m_cbPadBack
      The number of additional bytes to allocate and leave free at the back (end) of each block
    • m_listBlock

      protected List m_listBlock
      The list of blocks.
    • m_cBlocks

      protected int m_cBlocks
      The number of flushed blocks.
    • m_fClosed

      protected boolean m_fClosed
      True after close is invoked.
  • Constructor Details

    • MultiByteArrayOutputStream

      public MultiByteArrayOutputStream(int cbBlock)
      Construct a MultiByteArrayOutputStream to write to byte arrays of the specified length.
      Parameters:
      cbBlock - the number of bytes (maximum) per block
    • MultiByteArrayOutputStream

      public MultiByteArrayOutputStream(int cbBlock, int cbPadFront, int cbPadBack)
      Construct a MultiByteArrayOutputStream to write to byte arrays of the specified length, leaving the specified amount of padding at the front and back of each byte array.
      Parameters:
      cbBlock - the number of data bytes (maximum) per block
      cbPadFront - the number of additional bytes to allocate and leave free at the front (start) of each block
      cbPadBack - the number of additional bytes to allocate and leave free at the back (end) of each block
  • Method Details

    • write

      public void write(int b) throws IOException
      Writes the specified byte to this output stream.
      Specified by:
      write in interface com.oracle.coherence.common.io.OutputStreaming
      Specified by:
      write in class OutputStream
      Parameters:
      b - the byte.
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed.
    • write

      public void write(byte[] abSrc, int ofSrc, int cbSrc) throws IOException
      Writes len bytes from the specified byte array starting at offset off to this output stream.

      If b is null, a NullPointerException is thrown.

      If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

      Specified by:
      write in interface com.oracle.coherence.common.io.OutputStreaming
      Overrides:
      write in class OutputStream
      Parameters:
      abSrc - the data
      ofSrc - the start offset in the data
      cbSrc - the number of bytes to write
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.
    • flush

      public void flush() throws IOException
      Flush any accumulated bytes.
      Specified by:
      flush in interface Flushable
      Specified by:
      flush in interface com.oracle.coherence.common.io.OutputStreaming
      Overrides:
      flush in class OutputStream
      Throws:
      IOException - if an I/O error occurs
    • close

      public void close() throws IOException
      Close the stream, flushing any accumulated bytes.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface com.oracle.coherence.common.io.OutputStreaming
      Overrides:
      close in class OutputStream
      Throws:
      IOException - if an I/O error occurs
    • toString

      public String toString()
      Create a human readable string representing the data written to the stream.
      Overrides:
      toString in class Object
      Returns:
      a String representation of the stream's contents
    • getBlockCount

      public int getBlockCount()
      Determine the number of blocks that have been written thus far.
      Returns:
      the number of blocks (byte arrays) of output that have any data
    • getBlock

      public byte[] getBlock(int i)
      Obtain the specified block of data.
      Parameters:
      i - block index in the range [0..getBlockCount()]; passing the getBlockCount() will return the active block
      Returns:
      the specified block (byte array) of output
    • getBlockDataSize

      public int getBlockDataSize(int i)
      Determine the specific number of bytes of data stored in the specified block.
      Parameters:
      i - block index in the range [0..getBlockCount()]; passing the getBlockCount() will return the size of the active block
      Returns:
      the number of data bytes in a block
    • getBlockDataSize

      public int getBlockDataSize()
      Determine the maximum number of bytes of data that will be stored in each block.
      Returns:
      the number of data bytes (maximum) per block
    • getFrontPaddingSize

      public int getFrontPaddingSize()
      Determine the number of extra bytes of padding that will be allocated and left blank at the start of each block in front of the data portion.
      Returns:
      the number of additional bytes to allocate and leave free at the front (start) of each block
    • getBackPaddingSize

      public int getBackPaddingSize()
      Determine the number of extra bytes of padding that will be allocated and left blank at the end of each block after the data portion.
      Returns:
      the number of additional bytes to allocate and leave free at the back (end) of each block
    • check

      protected void check() throws IOException
      Verify that the stream is still open.
      Throws:
      IOException
    • requestCapacity

      protected int requestCapacity(int cbMore)
      Ensure that the current block contains some available capacity, preferably enough to fulfill the specified capacity. As a result of calling this method m_ab and m_of may change. If this call returns then the current block is guarenteed to contain at least one free byte of available capacity.
      Parameters:
      cbMore - the requested capacity
      Returns:
      the size of the current block