Package org.zeroturnaround.exec.stream
Class PumpStreamHandler
java.lang.Object
org.zeroturnaround.exec.stream.PumpStreamHandler
- All Implemented Interfaces:
ExecuteStreamHandler
Copies standard output and error of subprocesses to standard output and error
of the parent process. If output or error stream are set to null, any feedback
from that stream will be lost.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final OutputStream
protected Thread
protected final InputStream
protected InputStreamPumper
protected Thread
private static final org.slf4j.Logger
protected final OutputStream
protected Thread
-
Constructor Summary
ConstructorsConstructorDescriptionConstruct a newPumpStreamHandler
.PumpStreamHandler
(OutputStream outAndErr) Construct a newPumpStreamHandler
.PumpStreamHandler
(OutputStream out, OutputStream err) Construct a newPumpStreamHandler
.PumpStreamHandler
(OutputStream out, OutputStream err, InputStream input) Construct a newPumpStreamHandler
. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Create the pump to handle error output.protected void
Create the pump to handle process output.protected Thread
createPump
(InputStream is, OutputStream os) Creates a stream pumper to copy the given input stream to the given output stream.protected Thread
createPump
(InputStream is, OutputStream os, boolean closeWhenExhausted) Creates a stream pumper to copy the given input stream to the given output stream.protected Thread
createPump
(InputStream is, OutputStream os, boolean closeWhenExhausted, boolean flushImmediately) Creates a stream pumper to copy the given input stream to the given output stream.protected Thread
Creates a stream pumper to copy the given input stream to the given output stream.void
flush()
getErr()
Get the error stream.getInput()
Get the input stream.getOut()
Get the output stream.protected Thread
Override this to customize how the background task is created.void
Set theInputStream
from which to read the standard error of the process.void
Set theOutputStream
by means of which input can be sent to the process.void
Set theInputStream
from which to read the standard output of the process.void
start()
Start theThread
s.void
stop()
Stop pumping the streams.protected Runnable
Override this to customize how the background task is created.
-
Field Details
-
log
private static final org.slf4j.Logger log -
outputThread
-
errorThread
-
inputThread
-
out
-
err
-
input
-
inputStreamPumper
-
-
Constructor Details
-
PumpStreamHandler
public PumpStreamHandler()Construct a newPumpStreamHandler
. -
PumpStreamHandler
Construct a newPumpStreamHandler
.- Parameters:
outAndErr
- the output/errorOutputStream
.
-
PumpStreamHandler
Construct a newPumpStreamHandler
.- Parameters:
out
- the outputOutputStream
.err
- the errorOutputStream
.
-
PumpStreamHandler
Construct a newPumpStreamHandler
.- Parameters:
out
- the outputOutputStream
.err
- the errorOutputStream
.input
- the inputInputStream
.
-
-
Method Details
-
setProcessOutputStream
Set theInputStream
from which to read the standard output of the process.- Specified by:
setProcessOutputStream
in interfaceExecuteStreamHandler
- Parameters:
is
- theInputStream
.
-
setProcessErrorStream
Set theInputStream
from which to read the standard error of the process.- Specified by:
setProcessErrorStream
in interfaceExecuteStreamHandler
- Parameters:
is
- theInputStream
.
-
setProcessInputStream
Set theOutputStream
by means of which input can be sent to the process.- Specified by:
setProcessInputStream
in interfaceExecuteStreamHandler
- Parameters:
os
- theOutputStream
.
-
start
public void start()Start theThread
s.- Specified by:
start
in interfaceExecuteStreamHandler
-
stop
public void stop()Stop pumping the streams.- Specified by:
stop
in interfaceExecuteStreamHandler
-
flush
public void flush() -
getOut
Get the output stream.- Returns:
OutputStream
.
-
getErr
Get the error stream.- Returns:
OutputStream
.
-
getInput
Get the input stream.- Returns:
InputStream
.
-
createProcessOutputPump
Create the pump to handle process output.- Parameters:
is
- theInputStream
.os
- theOutputStream
.
-
createProcessErrorPump
Create the pump to handle error output.- Parameters:
is
- theInputStream
.os
- theOutputStream
.
-
createPump
Creates a stream pumper to copy the given input stream to the given output stream.- Parameters:
is
- the input stream to copy fromos
- the output stream to copy into- Returns:
- the stream pumper thread
-
createPump
Creates a stream pumper to copy the given input stream to the given output stream.- Parameters:
is
- the input stream to copy fromos
- the output stream to copy intocloseWhenExhausted
- close the output stream when the input stream is exhausted- Returns:
- the stream pumper thread
-
createPump
protected Thread createPump(InputStream is, OutputStream os, boolean closeWhenExhausted, boolean flushImmediately) Creates a stream pumper to copy the given input stream to the given output stream.- Parameters:
is
- the input stream to copy fromos
- the output stream to copy intocloseWhenExhausted
- close the output stream when the input stream is exhaustedflushImmediately
- flush the output stream whenever data was written to it- Returns:
- the stream pumper thread
-
createSystemInPump
Creates a stream pumper to copy the given input stream to the given output stream.- Parameters:
is
- the System.in input stream to copy fromos
- the output stream to copy into- Returns:
- the stream pumper thread
-
newThread
Override this to customize how the background task is created.- Parameters:
task
- the task to be run in the background- Returns:
- the thread of the task
-
wrapTask
Override this to customize how the background task is created.- Parameters:
task
- the task to be run in the background- Returns:
- the runnable of the wrapped task
-