Class MultiByteArrayOutputStream

    • Field Summary

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

      Constructors 
      Constructor Description
      MultiByteArrayOutputStream​(int cbBlock)
      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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void check()
      Verify that the stream is still open.
      void close()
      Close the stream, flushing any accumulated bytes.
      void flush()
      Flush any accumulated bytes.
      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.
      byte[] getBlock​(int i)
      Obtain the specified block of data.
      int getBlockCount()
      Determine the number of blocks that have been written thus far.
      int getBlockDataSize()
      Determine the maximum number of bytes of data that will be stored in each block.
      int getBlockDataSize​(int i)
      Determine the specific number of bytes of data stored in the specified block.
      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.
      protected int requestCapacity​(int cbMore)
      Ensure that the current block contains some available capacity, preferably enough to fulfill the specified capacity.
      String toString()
      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 interface com.oracle.coherence.common.io.OutputStreaming

        write
    • Field Detail

      • 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 Detail

      • 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 Detail

      • 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
      • 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