blob: e024417c2cceb3c95e64d9acc061e865319b08b9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
use mingling::{
AnyOutput,
macros::{chain, dispatcher, pack, r_println, renderer},
marker::NextProcess,
parser::Picker,
};
use crate::ThisProgram;
dispatcher!("add.dispatcher", AddDispatcherCommand => AddDispatcherEntry);
dispatcher!("remove.dispatcher", RemoveDispatcherCommand => RemoveDispatcherEntry);
#[chain]
pub fn parse_add_dispatcher(args: AddDispatcherEntry) -> NextProcess {
let picker: Picker<ThisProgram> = Picker::new(args.inner);
let dispatcher_name = picker.pick::<String>(()).unpack_directly().0;
let input = AddDispatcherInput::new(dispatcher_name);
input.into()
}
#[chain]
pub fn parse_remove_dispatcher(args: RemoveDispatcherEntry) -> NextProcess {
let picker: Picker<ThisProgram> = Picker::new(args.inner);
let dispatcher_name = picker.pick::<String>(()).unpack_directly().0;
let input = AddDispatcherInput::new(dispatcher_name);
input.into()
}
pack!(AddDispatcherInput = String);
#[chain]
pub fn exec_add_dispatcher(_input: AddDispatcherInput) -> NextProcess {
AnyOutput::new(AddDispatcherSuccess::new(())).route_chain()
}
pack!(AddDispatcherSuccess = ());
pack!(AddDispatcherFailed = String);
#[renderer]
pub fn render_add_dispatcher_success(_prev: AddDispatcherSuccess) {
r_println!("Dispatcher added successfully");
}
#[renderer]
pub fn render_add_dispatcher_failed(prev: AddDispatcherFailed) {
r_println!("Error: {}", prev.inner);
}
|