use orsomafo::{Dispatchable, EventDispatcherBuilder};
use tokio::time::{sleep, Duration};
#[tokio::main]
async fn main() {
pretty_env_logger::init();
HeartBeatLogged::subscribe_fn(|event| {
Box::pin(async move { println!("'subscribe_with' handler: {:?}", event.data()) })
})
.await;
EventDispatcherBuilder::new()
.listen_fn::<HeartBeatLogged>(|event| {
Box::pin(async move { println!("'listen_fn' handler: {:?}", event.data()) })
})
.listen_str_fn(&HeartBeatLogged::event(), |event| {
Box::pin(async move { println!("'listen_str_fn' handler: {:?}", event.data()) })
})
.build()
.await;
HeartBeatLogged(10_000).dispatch_event();
sleep(Duration::from_millis(100)).await;
}
#[derive(Clone, serde::Deserialize, serde::Serialize)]
struct HeartBeatLogged(u64);
impl Dispatchable for HeartBeatLogged {}