Package 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
`DemuxOutputStream​(Project project, boolean isErrorStream)` Creates a new instance of this class.

### Method Summary

All Methods Instance Methods Concrete 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

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