workflow_core/
trigger.rs

1/// re-exports triggered crate as well as
2/// two wrappers SingleTrigger and ReqRespTrigger
3pub use triggered::*;
4
5// use triggered::{Trigger,Listener};
6
7/// Wrapper containing a single Trigger instance
8#[derive(Debug, Clone)]
9pub struct SingleTrigger {
10    pub trigger: Trigger,
11    pub listener: Listener,
12}
13
14impl SingleTrigger {
15    pub fn new() -> SingleTrigger {
16        let (trigger, listener) = triggered::trigger();
17        SingleTrigger { trigger, listener }
18    }
19}
20
21impl Default for SingleTrigger {
22    fn default() -> Self {
23        Self::new()
24    }
25}
26
27/// Bi-directional trigger meant to function in
28/// request/response fashion
29#[derive(Debug, Clone)]
30pub struct ReqRespTrigger {
31    pub request: SingleTrigger,
32    pub response: SingleTrigger,
33}
34
35impl ReqRespTrigger {
36    pub fn new() -> ReqRespTrigger {
37        ReqRespTrigger {
38            request: SingleTrigger::new(),
39            response: SingleTrigger::new(),
40        }
41    }
42}
43
44impl Default for ReqRespTrigger {
45    fn default() -> Self {
46        Self::new()
47    }
48}