use super::super::{
channel::BoundedSender,
event::{DynEvent, Event},
scope::EventScope,
};
#[derive(Clone)]
pub struct EventSender {
pub(super) tx: BoundedSender<DynEvent>,
}
impl EventSender {
pub fn send<E: Event>(&self, event: E) {
let _ = self.tx.send(DynEvent::new(event));
}
pub fn try_send<E: Event>(&self, event: E) {
let _ = self.tx.try_send(DynEvent::new(event));
}
pub fn send_dyn(&self, event: DynEvent) {
let _ = self.tx.try_send(event);
}
pub fn send_scoped<E: Event>(&self, event: E, scope: &EventScope) {
scope.increment();
let dyn_event = DynEvent::new(event).with_scope(scope.clone());
let _ = self.tx.try_send(dyn_event);
}
}