wayvr/wayvr-ipc/src/util/notifier.rs

30 lines
512 B
Rust

use async_channel::{Receiver, Sender};
// Copyable wrapped Notify struct for easier usage
#[derive(Clone)]
pub struct Notifier {
sender: Sender<()>,
receiver: Receiver<()>,
}
impl Notifier {
pub fn new() -> Self {
let (sender, receiver) = async_channel::bounded(1);
Self { sender, receiver }
}
pub fn notify(&self) {
let _ = self.sender.try_send(());
}
pub async fn wait(&self) {
let _ = self.receiver.recv().await;
}
}
impl Default for Notifier {
fn default() -> Self {
Self::new()
}
}