refactor: use a RwLock for event listeners

This commit is contained in:
2025-02-24 16:52:34 -05:00
parent 36054ced03
commit 247612fad0
6 changed files with 26 additions and 20 deletions

View File

@@ -123,7 +123,7 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow:
}
async fn call_listeners<T: Clone + IntoLuaMulti>(state: &State, event_type: &str, data: T) {
if let Some(listeners) = state.event_listeners.lock().await.get(event_type) {
if let Some(listeners) = state.event_listeners.read().await.get(event_type) {
for (_, listener) in listeners {
if let Err(error) = listener.call_async::<()>(data.clone()).await {
error!("failed to call lua event listener for {event_type}: {error:?}");