Class ExposedByteArrayOutputStream

  • All Implemented Interfaces:
    Closeable, Flushable, AutoCloseable

    public class ExposedByteArrayOutputStream
    extends ByteArrayOutputStream
    Modified version of JGroups ExposedByteArrayOutputStream, which optimizes the write function to limit unnecessary transient array copies when the buffer gets large.
    Author:
    ActiveViam
    • Constructor Detail

      • ExposedByteArrayOutputStream

        public ExposedByteArrayOutputStream()
    • Method Detail

      • getRawBuffer

        public byte[] getRawBuffer()
        Returns the underlying byte array.
      • getCapacity

        public int getCapacity()
        Returns the capacity of the stream.
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
        Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
        Overrides:
        write in class ByteArrayOutputStream
        Parameters:
        b - the data.
        off - the start offset in the data.
        len - the number of bytes to write.
      • writeTo

        public void writeTo​(OutputStream out)
                     throws IOException
        Writes the complete contents of this byte array output stream to the specified output stream argument, as if by calling the output stream's write method using out.write(buf, 0, count).
        Overrides:
        writeTo in class ByteArrayOutputStream
        Parameters:
        out - the output stream to which to write the data.
        Throws:
        IOException - if an I/O error occurs.
      • reset

        public void reset()
        Resets the count field of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded. The output stream can be used again, reusing the already allocated buffer space.
        Overrides:
        reset in class ByteArrayOutputStream
        See Also:
        ByteArrayInputStream.count
      • reset

        public void reset​(int maxSize)
        Resets count and creates a new buf if the current buf is > maxSize. This method is not synchronized.
        Parameters:
        maxSize - size of the buffer
      • toByteArray

        public byte[] toByteArray()
        Creates a newly allocated byte array. Its size is the current size of this output stream and the valid contents of the buffer have been copied into it.
        Overrides:
        toByteArray in class ByteArrayOutputStream
        Returns:
        the current contents of this output stream, as a byte array.
        See Also:
        ByteArrayOutputStream.size()