tame_protocol/process_monitor/
tracer.rs

1pub use super::flow::*;
2use derive_more::{Deref, DerefMut};
3use rill_engine::tracers::tracer::{Tracer, Watcher};
4
5pub type ProcessMonitorWatcher = Watcher<ProcessMonitorState>;
6
7#[derive(Debug, Deref, DerefMut, Clone)]
8pub struct ProcessMonitorTracer {
9    tracer: Tracer<ProcessMonitorState>,
10}
11
12impl ProcessMonitorTracer {
13    pub fn new(command: Command) -> (Self, ProcessMonitorWatcher) {
14        let state = ProcessMonitorState::new(command);
15        let (tracer, watcher) = Tracer::new_push(state, LOCATION.root());
16        (Self { tracer }, watcher)
17    }
18
19    pub fn assign_pid(&self, pid: Option<Pid>) {
20        let msg = ProcessMonitorEvent::AssignPid { pid };
21        self.tracer.send(msg, None, None);
22    }
23
24    pub fn set_exit_code(&self, code: Option<ExitCode>) {
25        let msg = ProcessMonitorEvent::SetExitCode { code };
26        self.tracer.send(msg, None, None);
27    }
28}