use std::{num::NonZero, sync::Arc};
use crate::events::base::EventSystemBase;
use crate::events::manager::EventManager;
pub struct DistributedEventFactory {
system_id: u64,
base: Arc<EventSystemBase>,
}
impl DistributedEventFactory {
pub fn new(system_id: NonZero<u64>) -> Self {
Self {
system_id: system_id.get(),
base: EventSystemBase::distributed(system_id.get()),
}
}
pub fn system_id(&self) -> u64 {
self.system_id
}
pub fn system(&self) -> &Arc<EventSystemBase> {
&self.base
}
pub fn event_manager(&self) -> EventManager {
EventManager::new(self.base.clone(), self.base.clone() as _)
}
}