From b283c661555b003cf1775fdf3bb3100e5b288c02 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 10 Jun 2022 18:54:30 +0200 Subject: [PATCH] some minor improvements --- src/core/event_man.rs | 18 +++++++++++------- src/core/events.rs | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/core/event_man.rs b/src/core/event_man.rs index 68b6c54..720f99f 100644 --- a/src/core/event_man.rs +++ b/src/core/event_man.rs @@ -37,37 +37,41 @@ impl EventManager { } fn update_listeners (&mut self, key: ListenerType, dest: impl EventRecipient + 'static) { - if !self.listeners.contains_key(&key) { - self.listeners.insert(key, vec![Listener { _ltype: key, dest: Box::new(dest) }]); + if let std::collections::hash_map::Entry::Vacant(e) = self.listeners.entry(key) { + e.insert(vec![Listener { _ltype: key, dest: Box::new(dest) }]); } else { let vec = self.listeners.get_mut(&key).unwrap(); vec.push(Listener { _ltype: key, dest: Box::new(dest) }); } } - pub fn periodic_op(&mut self) -> Result<(), E> { + pub fn handle_one_event(&mut self) -> Result<(), E> { + let mut status = Ok(()); if let Some(event) = self.event_receiver.receive() { - println!("Received event {:?}", event); for (ltype, listener_list) in self.listeners.iter_mut() { match ltype { ListenerType::Single(raw_event) => { if event.raw() == *raw_event { for listener in listener_list.iter_mut() { - listener.dest.send_to(event)?; + if let Err(e) = listener.dest.send_to(event) { + status = Err(e); + } } } } ListenerType::Group(group_id) => { if event.group_id() == *group_id { for listener in listener_list.iter_mut() { - listener.dest.send_to(event)?; + if let Err(e) = listener.dest.send_to(event) { + status = Err(e); + } } } } } } } - Ok(()) + status } } diff --git a/src/core/events.rs b/src/core/events.rs index 561eefc..db09f11 100644 --- a/src/core/events.rs +++ b/src/core/events.rs @@ -4,7 +4,7 @@ pub type GroupId = u16; pub type UniqueId = u16; pub type EventRaw = u32; -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, PartialEq, Debug)] pub enum Severity { INFO = 1, LOW = 2,