Package hudson.util

Class ChunkedOutputStream

  • All Implemented Interfaces:
    Closeable, Flushable, AutoCloseable

    public class ChunkedOutputStream
    extends OutputStream
    Implements HTTP chunking support. Writes are buffered to an internal buffer (2048 default size). Chunks are guaranteed to be at least as large as the buffer size (except for the last chunk).
    Author:
    Mohammad Rezaei, Goldman, Sachs & Co.
    • Constructor Detail

      • ChunkedOutputStream

        public ChunkedOutputStream​(OutputStream stream,
                                   int bufferSize)
                            throws IOException
        Wraps a stream and chunks the output.
        Parameters:
        stream - to wrap
        bufferSize - minimum chunk size (excluding last chunk)
        Throws:
        IOException
        Since:
        3.0
      • ChunkedOutputStream

        public ChunkedOutputStream​(OutputStream stream)
                            throws IOException
        Wraps a stream and chunks the output. The default buffer size of 2048 was chosen because the chunk overhead is less than 0.5%
        Throws:
        IOException
    • Method Detail

      • flushCache

        protected void flushCache()
                           throws IOException
        Writes the cache out onto the underlying stream
        Throws:
        IOException
        Since:
        3.0
      • flushCacheWithAppend

        protected void flushCacheWithAppend​(byte[] bufferToAppend,
                                            int off,
                                            int len)
                                     throws IOException
        Writes the cache and bufferToAppend to the underlying stream as one large chunk
        Throws:
        IOException
        Since:
        3.0
      • finish

        public void finish()
                    throws IOException
        Must be called to ensure the internal cache is flushed and the closing chunk is written.
        Throws:
        IOException
        Since:
        3.0
      • write

        public void write​(int b)
                   throws IOException
        Write the specified byte to our output stream. Note: Avoid this method as it will cause an inefficient single byte chunk. Use write (byte[], int, int) instead.
        Specified by:
        write in class OutputStream
        Parameters:
        b - The byte to be written
        Throws:
        IOException - if an input/output error occurs
      • write

        public void write​(byte[] b)
                   throws IOException
        Writes the array. If the array does not fit within the buffer, it is not split, but rather written out as one large chunk.
        Overrides:
        write in class OutputStream
        Throws:
        IOException
        Since:
        3.0