From 283cb7e589447dc6303ece65dc166e53d6816ca7 Mon Sep 17 00:00:00 2001 From: "Luke D. Jones" Date: Wed, 21 Sep 2022 22:41:24 +1200 Subject: [PATCH] Previous inotify macro was blocking. Needs async closures... --- daemon/src/lib.rs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/daemon/src/lib.rs b/daemon/src/lib.rs index c59747c2..c0b98700 100644 --- a/daemon/src/lib.rs +++ b/daemon/src/lib.rs @@ -83,23 +83,22 @@ macro_rules! task_watch_item { executor: &mut Executor<'a>, signal_ctxt: SignalContext<'a>, ) -> Result<(), RogError> { + use zbus::export::futures_util::StreamExt; + let ctrl = self.clone(); concat_idents::concat_idents!(watch_fn = monitor_, $name { let mut watch = self.$self_inner.watch_fn()?; executor .spawn(async move { let mut buffer = [0; 1024]; - loop { - if let Ok(events) = watch.read_events_blocking(&mut buffer) { - for _ in events { - let value = ctrl.$name(); - dbg!(value); - concat_idents::concat_idents!(notif_fn = notify_, $name { - Self::notif_fn(&signal_ctxt, value).await.unwrap(); - }); - } - } - } + watch.event_stream(&mut buffer).unwrap().for_each(|e|{ + let value = ctrl.$name(); + dbg!(value); + concat_idents::concat_idents!(notif_fn = notify_, $name { + Self::notif_fn(&signal_ctxt, value).await.unwrap(); + }); + smol::future::ready(()) + }).await; }) .detach(); dbg!("SPWADEWFWEFE");