Package edu.isi.pegasus.common.util
Class StreamGobbler
- java.lang.Object
-
- java.lang.Thread
-
- edu.isi.pegasus.common.util.StreamGobbler
-
- All Implemented Interfaces:
java.lang.Runnable
public class StreamGobbler extends java.lang.ThreadA Stream gobbler class to take care of reading from a stream and optionally write out to another stream. Allows for non blocking reads on both stdout and stderr, when invoking a process through Runtime.exec(). Also, the user can specify a callback that is called whenever anything is read from the stream.- Author:
- Karan Vahi
-
-
Field Summary
Fields Modifier and Type Field Description private StreamGobblerCallbackmCallbackThe callback to be used.private java.io.InputStreammIPStreamThe input stream that is to be read from.private LogManagermLoggerThe handle to the logging object.private java.io.OutputStreammOPStreamThe output stream to which the contents have to be redirected to.private java.lang.StringmPromptThe prompt that is to be written to the output stream.private booleanmStartedA boolean indicating whether the thread has started or not.
-
Constructor Summary
Constructors Constructor Description StreamGobbler(java.io.InputStream is, StreamGobblerCallback callback)The overloaded constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes the underneath input and output stream that were opened.protected voidfinalize()Closes the open connections to the streams whenever this object is destroyed.voidredirect(java.io.OutputStream ops, java.lang.String prompt)Sets the output stream to which to redirect the contents of the input stream.voidrun()The main method of the gobbler, that does all the work.-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Field Detail
-
mIPStream
private java.io.InputStream mIPStream
The input stream that is to be read from.
-
mOPStream
private java.io.OutputStream mOPStream
The output stream to which the contents have to be redirected to.
-
mCallback
private StreamGobblerCallback mCallback
The callback to be used.
-
mPrompt
private java.lang.String mPrompt
The prompt that is to be written to the output stream.
-
mStarted
private boolean mStarted
A boolean indicating whether the thread has started or not.
-
mLogger
private LogManager mLogger
The handle to the logging object.
-
-
Constructor Detail
-
StreamGobbler
public StreamGobbler(java.io.InputStream is, StreamGobblerCallback callback)The overloaded constructor.- Parameters:
is- the input stream from which to read from.callback- the callback to call when a line is read.
-
-
Method Detail
-
redirect
public void redirect(java.io.OutputStream ops, java.lang.String prompt)Sets the output stream to which to redirect the contents of the input stream.- Parameters:
ops- the output stream.prompt- the prompt for the output stream.
-
run
public void run()
The main method of the gobbler, that does all the work.- Specified by:
runin interfacejava.lang.Runnable- Overrides:
runin classjava.lang.Thread
-
finalize
protected void finalize()
Closes the open connections to the streams whenever this object is destroyed.- Overrides:
finalizein classjava.lang.Object
-
close
public void close()
Closes the underneath input and output stream that were opened.
-
-