package com.yoursway.ide.worksheet.internal.misc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import com.yoursway.ide.worksheet.executors.OutputListener;
import com.yoursway.ide.worksheet.executors.standard.ExternalCommandExecutor.OutputCompletedMonitor;
public class OutputStreamMonitor {
private final Thread thread;
public OutputStreamMonitor(InputStream inputStream, final OutputListener outputter, final boolean error,
final OutputCompletedMonitor outputCompletedMonitor) {
//> encoding
final Reader reader = new BufferedReader(new InputStreamReader(inputStream));
thread = new Thread(OutputStreamMonitor.class.getSimpleName()) {
@Override
public void run() {
try {
char[] cbuf = new char[256]; //! magic
while (true) {
int read = reader.read(cbuf);
if (read == -1)
break;
outputter.outputted(String.copyValueOf(cbuf, 0, read), error);
outputCompletedMonitor.outputDetected();
}
} catch (IOException e) {
e.printStackTrace(); //!
}
}
};
}
public void start() {
thread.start();
}
}