DemuxOutputStream (Apache Ant API)
Description: declaration: package: org.apache.tools.ant, class: DemuxOutputStream

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

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `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 Details

  - ### 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 Details

  - ### 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.