use std::fmt;
#[cfg(feature = "async")]
pub use crate::asynchronous::monitor::*;
#[cfg(not(feature = "async"))]
pub use crate::synchronous::monitor::*;
#[derive(Clone, Eq, Hash, PartialEq)]
pub enum Topic {
Pid,
Exec,
All,
}
#[derive(Debug)]
pub struct ExitEvent {
pub subject: Subject,
pub exit_code: i32,
}
impl fmt::Display for ExitEvent {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match &self.subject {
Subject::Pid(pid) => {
write!(f, "PID {} exit with code {}", pid, self.exit_code)
}
Subject::Exec(cid, eid) => {
write!(
f,
"EXEC process {} inside {} exit with code {}",
eid, cid, self.exit_code
)
}
}
}
}
#[derive(Clone, Debug)]
pub enum Subject {
Pid(i32),
Exec(String, String),
}