|
|
|
@ -90,19 +90,24 @@ fn run_loop(procs: Vec<Proc>, holds: Option<i8>, poll: Poll, signals: Signals) -
|
|
|
|
|
let mut proc = procs.remove(i);
|
|
|
|
|
|
|
|
|
|
match proc.process.try_recv() {
|
|
|
|
|
// got something on stdout or stderr
|
|
|
|
|
Ok(ProcessEvent::Data(channel, data)) => {
|
|
|
|
|
process_event_data(channel, data, &proc.app.name);
|
|
|
|
|
procs.push(proc);
|
|
|
|
|
}
|
|
|
|
|
// error starting or closing child process
|
|
|
|
|
Ok(ProcessEvent::CommandError(e)) => {
|
|
|
|
|
error!("[{}]: command error: {:?}", &proc.app.name, e)
|
|
|
|
|
}
|
|
|
|
|
// error reading stdout or stderr
|
|
|
|
|
Ok(ProcessEvent::IoError(channel, e)) => {
|
|
|
|
|
error!("[{}]: io error on {:?}: {:?}", &proc.app.name, channel, e)
|
|
|
|
|
}
|
|
|
|
|
// error doing utf8 translation
|
|
|
|
|
Ok(ProcessEvent::Utf8Error(channel, e)) => {
|
|
|
|
|
error!("[{}]: utf8 error on {:?}: {:?}", &proc.app.name, channel, e)
|
|
|
|
|
}
|
|
|
|
|
// process exited
|
|
|
|
|
Ok(ProcessEvent::Exit(status)) => {
|
|
|
|
|
let hold = proc.app.hold.unwrap_or(false);
|
|
|
|
|
if proc.app.check_restart(status) {
|
|
|
|
|