Init Event Module #4

Merged
muellerr merged 16 commits from events into main 2022-06-11 12:36:40 +02:00
2 changed files with 12 additions and 8 deletions
Showing only changes of commit b283c66155 - Show all commits

View File

@ -37,37 +37,41 @@ impl<E> EventManager<E> {
}
fn update_listeners (&mut self, key: ListenerType, dest: impl EventRecipient<Error=E> + '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
}
}

View File

@ -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,