org.apache.http.impl.io
Class ChunkedOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by org.apache.http.impl.io.ChunkedOutputStream
All Implemented Interfaces:
Closeable, Flushable

public class ChunkedOutputStream
extends OutputStream

Implements chunked transfer coding. The content is sent in small chunks. Entities transferred using this output stream can be of unlimited length. Writes are buffered to an internal buffer (2048 default size).

Note that this class NEVER closes the underlying stream, even when close gets called. Instead, the stream will be marked as closed and no further output will be permitted.

Since:
4.0

Constructor Summary
ChunkedOutputStream(int bufferSize, SessionOutputBuffer out)
          Wraps a session output buffer and chunk-encodes the output.
ChunkedOutputStream(SessionOutputBuffer out)
          Deprecated. (4.3) use ChunkedOutputStream(int, SessionOutputBuffer)
ChunkedOutputStream(SessionOutputBuffer out, int bufferSize)
          Deprecated. (4.3) use ChunkedOutputStream(int, SessionOutputBuffer)
 
Method Summary
 void close()
          Finishes writing to the underlying stream, but does NOT close the underlying stream.
 void finish()
          Must be called to ensure the internal cache is flushed and the closing chunk is written.
 void flush()
          Flushes the content buffer and the underlying stream.
protected  void flushCache()
          Writes the cache out onto the underlying stream
protected  void flushCacheWithAppend(byte[] bufferToAppend, int off, int len)
          Writes the cache and bufferToAppend to the underlying stream as one large chunk
 void write(byte[] b)
          Writes the array.
 void write(byte[] src, int off, int len)
          Writes the array.
 void write(int b)
           
protected  void writeClosingChunk()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ChunkedOutputStream

@Deprecated
public ChunkedOutputStream(SessionOutputBuffer out,
                                      int bufferSize)
                    throws IOException
Deprecated. (4.3) use ChunkedOutputStream(int, SessionOutputBuffer)

Wraps a session output buffer and chunk-encodes the output.

Parameters:
out - The session output buffer
bufferSize - The minimum chunk size (excluding last chunk)
Throws:
IOException - not thrown

ChunkedOutputStream

@Deprecated
public ChunkedOutputStream(SessionOutputBuffer out)
                    throws IOException
Deprecated. (4.3) use ChunkedOutputStream(int, SessionOutputBuffer)

Wraps a session output buffer and chunks the output. The default buffer size of 2048 was chosen because the chunk overhead is less than 0.5%

Parameters:
out - the output buffer to wrap
Throws:
IOException - not thrown

ChunkedOutputStream

public ChunkedOutputStream(int bufferSize,
                           SessionOutputBuffer out)
Wraps a session output buffer and chunk-encodes the output.

Parameters:
bufferSize - The minimum chunk size (excluding last chunk)
out - The session output buffer
Method Detail

flushCache

protected void flushCache()
                   throws IOException
Writes the cache out onto the underlying stream

Throws:
IOException

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

writeClosingChunk

protected void writeClosingChunk()
                          throws IOException
Throws:
IOException

finish

public void finish()
            throws IOException
Must be called to ensure the internal cache is flushed and the closing chunk is written.

Throws:
IOException - in case of an I/O error

write

public void write(int b)
           throws IOException
Specified by:
write in class OutputStream
Throws:
IOException

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

write

public void write(byte[] src,
                  int off,
                  int len)
           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

flush

public void flush()
           throws IOException
Flushes the content buffer and the underlying stream.

Specified by:
flush in interface Flushable
Overrides:
flush in class OutputStream
Throws:
IOException

close

public void close()
           throws IOException
Finishes writing to the underlying stream, but does NOT close the underlying stream.

Specified by:
close in interface Closeable
Overrides:
close in class OutputStream
Throws:
IOException


Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.