diff --git a/libcitadel/src/realm/events.rs b/libcitadel/src/realm/events.rs index 4dbc438..059890e 100644 --- a/libcitadel/src/realm/events.rs +++ b/libcitadel/src/realm/events.rs @@ -59,7 +59,7 @@ impl Inner { self.manager = Arc::downgrade(manager); } - pub fn add_handler(&mut self, handler: F) + fn add_handler(&mut self, handler: F) where F: Fn(&RealmEvent), F: 'static + Send + Sync { @@ -109,6 +109,12 @@ impl RealmEventListener { self.running.swap(val, Ordering::SeqCst) } + pub fn send_event(&self, event: RealmEvent) { + if self.is_running() { + self.inner().send_event(event); + } + } + pub fn add_handler(&self, handler: F) where F: Fn(&RealmEvent), F: 'static + Send + Sync diff --git a/libcitadel/src/realm/manager.rs b/libcitadel/src/realm/manager.rs index e60ec6c..945d06d 100644 --- a/libcitadel/src/realm/manager.rs +++ b/libcitadel/src/realm/manager.rs @@ -356,7 +356,9 @@ impl RealmManager { } pub fn new_realm(&self, name: &str) -> Result { - self.inner_mut().realms.create_realm(name) + let realm = self.inner_mut().realms.create_realm(name)?; + self.inner().events.send_event(RealmEvent::New(realm.clone())); + Ok(realm) } pub fn delete_realm(&self, realm: &Realm, save_home: bool) -> Result<()> {