superviseur_macros/
lib.rs

1#[macro_export]
2macro_rules! default_stderr {
3    ($project: expr, $service: expr) => {
4        format!("/tmp/{}-{}.err", $project, $service)
5    };
6}
7
8#[macro_export]
9macro_rules! default_stdout {
10    ($project: expr, $service: expr) => {
11        format!("/tmp/{}-{}.log", $project, $service)
12    };
13}
14
15#[macro_export]
16macro_rules! create_driver {
17    ($driver_path:path, $project:expr, $service:expr, $processes:expr, $event_tx:expr, $childs:expr, $log_engine:expr, $superviseur_event:expr) => {
18        Box::new($driver_path(
19            $project.clone(),
20            $service,
21            $processes.clone(),
22            $event_tx.clone(),
23            $childs.clone(),
24            $log_engine.clone(),
25            $superviseur_event.clone(),
26        ))
27    };
28}
29
30#[macro_export]
31macro_rules! check_driver {
32    ($use:expr, $driver:expr) => {
33        $use.clone()
34            .into_iter()
35            .any(|(driver, _)| driver == $driver)
36    };
37}
38
39#[macro_export]
40macro_rules! wait_child_process_in_background {
41    ($child:expr, $event_tx:expr, $service_name:expr, $project:expr, $superviseur_event_tx:expr) => {
42        tokio::spawn(async move {
43            let status = $child.wait().unwrap();
44            $event_tx
45                .send(ProcessEvent::Stopped(
46                    $service_name.clone(),
47                    $project.clone(),
48                ))
49                .unwrap();
50            match status.success() {
51                true => {
52                    $superviseur_event_tx
53                        .send(SuperviseurEvent::Stopped($project, $service_name.clone()))
54                        .unwrap();
55                }
56                false => {
57                    $superviseur_event_tx
58                        .send(SuperviseurEvent::Crashed($project, $service_name))
59                        .unwrap();
60                }
61            }
62        });
63    };
64}