evergreen/common/trigger/reactor/
mod.rs1use crate::common::trigger::{Event, EventState, Processor};
3use crate::result::EgResult;
4
5mod circ;
6
7impl Processor<'_> {
9 pub fn react(&mut self, events: &mut [&mut Event]) -> EgResult<()> {
17 let event_ids: Vec<String> = events.iter().map(|e| e.id().to_string()).collect();
18
19 log::info!("{self} reacting to events [{}]", event_ids.join(","));
20
21 if events.is_empty() {
22 return Ok(());
23 }
24
25 for event in events.iter_mut() {
26 self.set_event_state(event, EventState::Reacting)?;
27 }
28
29 let reactor = self.reactor();
30
31 log::debug!(
32 "{self} reacting with '{reactor}' on {} event(s)",
33 events.len()
34 );
35
36 let react_result = match reactor {
37 "NOOP_True" => Ok(()),
38 "NOOP_False" => Err("NOOP_False".to_string().into()),
39 "Circ::AutoRenew" => self.autorenew(events),
40 _ => Err(format!("No such reactor: {reactor}").into()),
41 };
42
43 if react_result.is_ok() {
44 for event in events.iter_mut() {
45 self.set_event_state(event, EventState::Reacted)?;
46 }
47 }
48
49 react_result
50 }
51}