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) {
for _ in events {
let value = ctrl.$name(); let value = ctrl.$name();
dbg!(value); dbg!(value);
concat_idents::concat_idents!(notif_fn = notify_, $name { concat_idents::concat_idents!(notif_fn = notify_, $name {
Self::notif_fn(&signal_ctxt, value).await.unwrap(); Self::notif_fn(&signal_ctxt, value).await.unwrap();
}); });
} smol::future::ready(())
} }).await;
}
}) })
.detach(); .detach();
dbg!("SPWADEWFWEFE"); dbg!("SPWADEWFWEFE");