diff --git a/src/service.rs b/src/service.rs index 754f4634..76a25985 100644 --- a/src/service.rs +++ b/src/service.rs @@ -1,5 +1,5 @@ use std::{ - collections::{BTreeMap, HashMap}, + collections::BTreeMap, sync::{Arc, Mutex as StdMutex, OnceLock}, }; @@ -88,10 +88,7 @@ impl Services { typing: rooms::edus::typing::Service::new(), }, event_handler: rooms::event_handler::Service, - lazy_loading: rooms::lazy_loading::Service { - db, - lazy_load_waiting: Mutex::new(HashMap::new()), - }, + lazy_loading: rooms::lazy_loading::Service::new(db), metadata: db, outlier: db, pdu_metadata: rooms::pdu_metadata::Service { diff --git a/src/service/rooms/lazy_loading.rs b/src/service/rooms/lazy_loading.rs index f2732790..4c0508f1 100644 --- a/src/service/rooms/lazy_loading.rs +++ b/src/service/rooms/lazy_loading.rs @@ -11,10 +11,10 @@ mod data; pub(crate) use data::Data; pub(crate) struct Service { - pub(crate) db: &'static dyn Data, + db: &'static dyn Data, #[allow(clippy::type_complexity)] - pub(crate) lazy_load_waiting: Mutex< + lazy_load_waiting: Mutex< HashMap< (OwnedUserId, OwnedDeviceId, OwnedRoomId, PduCount), HashSet, @@ -23,6 +23,13 @@ pub(crate) struct Service { } impl Service { + pub(crate) fn new(db: &'static dyn Data) -> Self { + Self { + db, + lazy_load_waiting: Mutex::new(HashMap::new()), + } + } + #[tracing::instrument(skip(self))] pub(crate) fn lazy_load_was_sent_before( &self,