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 streamvoid
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.
-
Constructor Details
-
DemuxOutputStream
Creates a new instance of this class.- Parameters:
project
- The project instance for which output is being demultiplexed. Must not benull
.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.IOExceptionWrites 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 classjava.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.IOExceptionEquivalent to flushing the stream.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.OutputStream
- Throws:
java.io.IOException
- if there is a problem closing the stream.- See Also:
flush()
-
flush
public void flush() throws java.io.IOExceptionWrites all remaining data in the buffer associated with the current thread to the project.- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.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.IOExceptionWrite a block of characters to the output stream- Overrides:
write
in classjava.io.OutputStream
- Parameters:
b
- the array containing the dataoff
- the offset into the array where data startslen
- the length of block- Throws:
java.io.IOException
- if the data cannot be written into the stream.
-