superviseur_macros/
lib.rs1#[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}