From c6e2f8372ca9ec5b175cf0737ed29a335318cc2f Mon Sep 17 00:00:00 2001 From: Charles Hall Date: Tue, 8 Oct 2024 16:15:24 -0700 Subject: [PATCH] add constructor for state accessor service --- src/service.rs | 16 ++++++++-------- src/service/rooms/state_accessor.rs | 23 +++++++++++++++++++---- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/service.rs b/src/service.rs index 76a25985..b5f356aa 100644 --- a/src/service.rs +++ b/src/service.rs @@ -133,25 +133,25 @@ impl Services { state: rooms::state::Service { db, }, - state_accessor: rooms::state_accessor::Service { + state_accessor: rooms::state_accessor::Service::new( db, #[allow( clippy::as_conversions, clippy::cast_sign_loss, clippy::cast_possible_truncation )] - server_visibility_cache: StdMutex::new(LruCache::new( - (100.0 * config.cache_capacity_modifier) as usize, - )), + { + (100.0 * config.cache_capacity_modifier) as usize + }, #[allow( clippy::as_conversions, clippy::cast_sign_loss, clippy::cast_possible_truncation )] - user_visibility_cache: StdMutex::new(LruCache::new( - (100.0 * config.cache_capacity_modifier) as usize, - )), - }, + { + (100.0 * config.cache_capacity_modifier) as usize + }, + ), state_cache: rooms::state_cache::Service::new(db), state_compressor: rooms::state_compressor::Service { db, diff --git a/src/service/rooms/state_accessor.rs b/src/service/rooms/state_accessor.rs index c3160d96..a3922249 100644 --- a/src/service/rooms/state_accessor.rs +++ b/src/service/rooms/state_accessor.rs @@ -38,14 +38,29 @@ mod data; pub(crate) use data::Data; pub(crate) struct Service { - pub(crate) db: &'static dyn Data, - pub(crate) server_visibility_cache: + db: &'static dyn Data, + server_visibility_cache: Mutex>, - pub(crate) user_visibility_cache: - Mutex>, + user_visibility_cache: Mutex>, } impl Service { + pub(crate) fn new( + db: &'static dyn Data, + server_visibility_cache_size: usize, + user_visibility_cache_size: usize, + ) -> Self { + Self { + db, + server_visibility_cache: Mutex::new(LruCache::new( + server_visibility_cache_size, + )), + user_visibility_cache: Mutex::new(LruCache::new( + user_visibility_cache_size, + )), + } + } + /// Builds a StateMap by iterating over all keys that start /// with state_hash, this gives the full state for the given state_hash. #[tracing::instrument(skip(self))]