org.w3c.www.http
Class ChunkedOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by java.io.FilterOutputStream
          extended by java.io.DataOutputStream
              extended by org.w3c.www.http.ChunkedOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.DataOutput, java.io.Flushable

public class ChunkedOutputStream
extends java.io.DataOutputStream


Field Summary
protected  byte[] bheader
          Internal buffer to hold chunk size.
protected  byte[] buffer
          The chunking buffer.
protected  int bufptr
          Where to put next piece of data (current chunk size).
protected  int chunksize
          The chunk size to use (defaults to buffer size).
 
Fields inherited from class java.io.DataOutputStream
written
 
Fields inherited from class java.io.FilterOutputStream
out
 
Constructor Summary
ChunkedOutputStream(byte[] buffer, java.io.DataOutputStream out)
          Create a chunk encoder, using the provided buffer.
ChunkedOutputStream(java.io.DataOutputStream out)
          Create a chunk encoder.
 
Method Summary
protected  void append(byte[] b, int off, int len)
          Append a bunch of bytes to current pending chunk.
protected  void append(int v)
          Append one byte to pending chunk.
 void close()
          Close that encoding stream.
 void close(boolean really)
          Close that encoding stream.
 void flush()
          Flush pending output.
protected  void sendChunk()
          Send current chunk of data.
protected  void sendChunk(byte[] b, int off, int len)
          Send given buffer as a full chunk.
protected  void sendClose()
          Send the close chunk.
 void write(byte[] b, int off, int len)
          Write an array of bytes.
 void write(int b)
          Write one byte of output.
 
Methods inherited from class java.io.DataOutputStream
size, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF
 
Methods inherited from class java.io.FilterOutputStream
write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.io.DataOutput
write
 

Field Detail

buffer

protected byte[] buffer
The chunking buffer.


bufptr

protected int bufptr
Where to put next piece of data (current chunk size).


chunksize

protected int chunksize
The chunk size to use (defaults to buffer size).


bheader

protected byte[] bheader
Internal buffer to hold chunk size.

Constructor Detail

ChunkedOutputStream

public ChunkedOutputStream(byte[] buffer,
                           java.io.DataOutputStream out)
Create a chunk encoder, using the provided buffer.

Parameters:
buffer - The buffer to use (determines the default chunk size).
put - The DataOutputStream to write encoded data to.

ChunkedOutputStream

public ChunkedOutputStream(java.io.DataOutputStream out)
Create a chunk encoder.

Parameters:
out - The DataOutputStream to write to.
Method Detail

sendClose

protected void sendClose()
                  throws java.io.IOException
Send the close chunk.

Throws:
java.io.IOException

sendChunk

protected void sendChunk(byte[] b,
                         int off,
                         int len)
                  throws java.io.IOException
Send given buffer as a full chunk.

Parameters:
b - The buffer that contains the data to emit.
off - Offset of chunk in above buffer.
len - Length of chunk.
Throws:
java.io.IOException - If writing fails.

sendChunk

protected void sendChunk()
                  throws java.io.IOException
Send current chunk of data.

Throws:
java.io.IOException - If writing fails.

append

protected final void append(int v)
                     throws java.io.IOException
Append one byte to pending chunk.

Parameters:
v - The byte to append.
Throws:
java.io.IOException - If writing fails.

append

protected final void append(byte[] b,
                            int off,
                            int len)
                     throws java.io.IOException
Append a bunch of bytes to current pending chunk.

Parameters:
b - The chunk of bytes to add.
off - Offset of chunk within above buffer.
len - Length of chunk.
Throws:
java.io.IOException - If writing fails.

close

public void close()
           throws java.io.IOException
Close that encoding stream.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.FilterOutputStream
Throws:
java.io.IOException - If writing fails.

close

public void close(boolean really)
           throws java.io.IOException
Close that encoding stream.

Throws:
java.io.IOException - If writing fails.

flush

public void flush()
           throws java.io.IOException
Flush pending output.

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.DataOutputStream
Throws:
java.io.IOException - If writing fails.

write

public void write(int b)
           throws java.io.IOException
Write one byte of output.

Specified by:
write in interface java.io.DataOutput
Overrides:
write in class java.io.DataOutputStream
Parameters:
v - The byte to write.
Throws:
java.io.IOException - If writing fails.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Write an array of bytes.

Specified by:
write in interface java.io.DataOutput
Overrides:
write in class java.io.DataOutputStream
Parameters:
b - The data to write.
off - Offfset within above buffer.
len - Length of data to write.
Throws:
java.io.IOException - If writing fails.