Class ByteString.Output

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable
    Enclosing class:
    ByteString

    public static final class ByteString.Output
    extends java.io.OutputStream
    Outputs to a ByteString instance. Call toByteString() to create the ByteString instance.
    • Constructor Summary

      Constructors 
      Constructor Description
      Output​(int initialCapacity)
      Creates a new ByteString output stream with the specified initial capacity.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void flushFullBuffer​(int minSize)
      Internal function used by writers.
      private void flushLastBuffer()
      Internal function used by toByteString().
      void reset()
      Resets this stream, so that all currently accumulated output in the output stream is discarded.
      int size()
      Returns the current size of the output stream.
      ByteString toByteString()
      Creates a byte string with the size and contents of this output stream.
      java.lang.String toString()  
      void write​(byte[] b, int offset, int length)  
      void write​(int b)  
      void writeTo​(java.io.OutputStream out)
      Writes the complete contents of this byte array output stream to the specified output stream argument.
      • Methods inherited from class java.io.OutputStream

        close, flush, nullOutputStream, write
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • EMPTY_BYTE_ARRAY

        private static final byte[] EMPTY_BYTE_ARRAY
      • initialCapacity

        private final int initialCapacity
      • flushedBuffers

        private final java.util.ArrayList<ByteString> flushedBuffers
      • flushedBuffersTotalBytes

        private int flushedBuffersTotalBytes
      • buffer

        private byte[] buffer
      • bufferPos

        private int bufferPos
    • Constructor Detail

      • Output

        Output​(int initialCapacity)
        Creates a new ByteString output stream with the specified initial capacity.
        Parameters:
        initialCapacity - the initial capacity of the output stream.
    • Method Detail

      • write

        public void write​(int b)
        Specified by:
        write in class java.io.OutputStream
      • write

        public void write​(byte[] b,
                          int offset,
                          int length)
        Overrides:
        write in class java.io.OutputStream
      • toByteString

        public ByteString toByteString()
        Creates a byte string with the size and contents of this output stream. This does not create a new copy of the underlying bytes. If the stream size grows dynamically, the runtime is O(log n) in respect to the number of bytes written to the ByteString.Output. If the stream size stays within the initial capacity, the runtime is O(1).
        Returns:
        the current contents of this output stream, as a byte string.
      • writeTo

        public void writeTo​(java.io.OutputStream out)
                     throws java.io.IOException
        Writes the complete contents of this byte array output stream to the specified output stream argument.
        Parameters:
        out - the output stream to which to write the data.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • size

        public int size()
        Returns the current size of the output stream.
        Returns:
        the current size of the output stream
      • reset

        public void reset()
        Resets this stream, 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.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • flushFullBuffer

        private void flushFullBuffer​(int minSize)
        Internal function used by writers. The current buffer is full, and the writer needs a new buffer whose size is at least the specified minimum size.
      • flushLastBuffer

        private void flushLastBuffer()
        Internal function used by toByteString(). The current buffer may or may not be full, but it needs to be flushed.