org.apache.tools.ant
Class DemuxOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by org.apache.tools.ant.DemuxOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable

public class DemuxOutputStream
extends java.io.OutputStream

Logs content written by a thread and forwards the buffers onto the project object which will forward the content to the appropriate task.

Since:
1.4

Constructor Summary
DemuxOutputStream(Project project, boolean isErrorStream)
          Creates a new instance of this class.
 
Method Summary
 void close()
          Equivalent to flushing the stream.
 void flush()
          Writes all remaining data in the buffer associated with the current thread to the project.
protected  void processBuffer(java.io.ByteArrayOutputStream buffer)
          Converts the buffer to a string and sends it to the project.
protected  void processFlush(java.io.ByteArrayOutputStream buffer)
          Converts the buffer to a string and sends it to the project.
 void write(byte[] b, int off, int len)
          Write a block of characters to the output stream
 void write(int cc)
          Writes the data to the buffer and flushes the buffer if a line separator is detected or if the buffer has reached its maximum size.
 
Methods inherited from class java.io.OutputStream
write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DemuxOutputStream

public DemuxOutputStream(Project project,
                         boolean isErrorStream)
Creates a new instance of this class.

Parameters:
project - The project instance for which output is being demultiplexed. Must not be null.
isErrorStream - true if this is the error string, otherwise a normal output stream. This is passed to the project so it knows which stream it is receiving.
Method Detail

write

public void write(int cc)
           throws java.io.IOException
Writes the data to the buffer and flushes the buffer if a line separator is detected or if the buffer has reached its maximum size.

Specified by:
write in class java.io.OutputStream
Parameters:
cc - data to log (byte).
Throws:
java.io.IOException - if the data cannot be written to the stream

processBuffer

protected void processBuffer(java.io.ByteArrayOutputStream buffer)
Converts the buffer to a string and sends it to the project.

Parameters:
buffer - the ByteArrayOutputStream used to collect the output until a line separator is seen.
See Also:
Project.demuxOutput(String,boolean)

processFlush

protected void processFlush(java.io.ByteArrayOutputStream buffer)
Converts the buffer to a string and sends it to the project.

Parameters:
buffer - the ByteArrayOutputStream used to collect the output until a line separator is seen.
See Also:
Project.demuxOutput(String,boolean)

close

public void close()
           throws java.io.IOException
Equivalent to flushing the stream.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.OutputStream
Throws:
java.io.IOException - if there is a problem closing the stream.
See Also:
flush()

flush

public void flush()
           throws java.io.IOException
Writes all remaining data in the buffer associated with the current thread to the project.

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.OutputStream
Throws:
java.io.IOException - if there is a problem flushing the stream.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Write a block of characters to the output stream

Overrides:
write in class java.io.OutputStream
Parameters:
b - the array containing the data
off - the offset into the array where data starts
len - the length of block
Throws:
java.io.IOException - if the data cannot be written into the stream.