pub mod event_bus;
use core::future::Future;
use core::pin::Pin;
pub use event_bus::{Event, EventBus};
pub use jaeb_macros::{bootstrap_listeners, event_listener};
pub mod _private {
pub use inventory;
}
pub type RegistrarFuture<'a> = Pin<Box<dyn Future<Output = ()> + Send + 'a>>;
pub type RegistrarFn = for<'a> fn(&'a EventBus) -> RegistrarFuture<'a>;
pub struct ListenerRegistrar {
pub func: RegistrarFn,
}
inventory::collect!(ListenerRegistrar);
pub async fn bootstrap_listeners(bus: &EventBus) {
for reg in inventory::iter::<ListenerRegistrar> {
(reg.func)(bus).await;
}
}