## org.apache.tools.ant
Class DemuxOutputStream

    java.lang.Object
      java.io.OutputStream
          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.