Previous inotify macro was blocking. Needs async closures...

This commit is contained in:
Luke D. Jones
2022-09-21 22:41:24 +12:00
parent 5d87747d96
commit 283cb7e589

View File

@@ -83,23 +83,22 @@ macro_rules! task_watch_item {
executor: &mut Executor<'a>, executor: &mut Executor<'a>,
signal_ctxt: SignalContext<'a>, signal_ctxt: SignalContext<'a>,
) -> Result<(), RogError> { ) -> Result<(), RogError> {
use zbus::export::futures_util::StreamExt;
let ctrl = self.clone(); let ctrl = self.clone();
concat_idents::concat_idents!(watch_fn = monitor_, $name { concat_idents::concat_idents!(watch_fn = monitor_, $name {
let mut watch = self.$self_inner.watch_fn()?; let mut watch = self.$self_inner.watch_fn()?;
executor executor
.spawn(async move { .spawn(async move {
let mut buffer = [0; 1024]; let mut buffer = [0; 1024];
loop { watch.event_stream(&mut buffer).unwrap().for_each(|e|{
if let Ok(events) = watch.read_events_blocking(&mut buffer) { let value = ctrl.$name();
for _ in events { dbg!(value);
let value = ctrl.$name(); concat_idents::concat_idents!(notif_fn = notify_, $name {
dbg!(value); Self::notif_fn(&signal_ctxt, value).await.unwrap();
concat_idents::concat_idents!(notif_fn = notify_, $name { });
Self::notif_fn(&signal_ctxt, value).await.unwrap(); smol::future::ready(())
}); }).await;
}
}
}
}) })
.detach(); .detach();
dbg!("SPWADEWFWEFE"); dbg!("SPWADEWFWEFE");