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, java.lang.AutoCloseable

    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

Constructors
Constructor and Description
`DemuxOutputStream(Project project, boolean isErrorStream)` Creates a new instance of this class.

### Method Summary

Methods
`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`
Specified by:
  `close` in interface `java.lang.AutoCloseable`
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.