diff --git a/src/service/account_data/mod.rs b/src/service/account_data/mod.rs index 2bf18e471..ce52c2491 100644 --- a/src/service/account_data/mod.rs +++ b/src/service/account_data/mod.rs @@ -27,7 +27,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), db: Data { diff --git a/src/service/admin/mod.rs b/src/service/admin/mod.rs index 0383e038a..6fd0353dc 100644 --- a/src/service/admin/mod.rs +++ b/src/service/admin/mod.rs @@ -63,14 +63,14 @@ const COMMAND_QUEUE_LIMIT: usize = 512; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), channel: StdRwLock::new(None), handle: RwLock::new(None), complete: StdRwLock::new(None), #[cfg(feature = "console")] - console: console::Console::new(&args), + console: console::Console::new(args), })) } diff --git a/src/service/appservice/mod.rs b/src/service/appservice/mod.rs index 32776df4c..cc44ef879 100644 --- a/src/service/appservice/mod.rs +++ b/src/service/appservice/mod.rs @@ -30,7 +30,7 @@ type Registrations = BTreeMap; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { registration_info: RwLock::new(BTreeMap::new()), services: args.services.clone(), diff --git a/src/service/client/mod.rs b/src/service/client/mod.rs index 04910c4fa..f7de6542c 100644 --- a/src/service/client/mod.rs +++ b/src/service/client/mod.rs @@ -26,7 +26,7 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { let config = &args.server.config; macro_rules! create_client { diff --git a/src/service/config/mod.rs b/src/service/config/mod.rs index d6c13e8e9..50eb332f8 100644 --- a/src/service/config/mod.rs +++ b/src/service/config/mod.rs @@ -15,7 +15,7 @@ const SIGNAL: &str = "SIGUSR1"; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { server: args.server.clone() })) } diff --git a/src/service/deactivate/mod.rs b/src/service/deactivate/mod.rs index 43c5fdeb5..88443d261 100644 --- a/src/service/deactivate/mod.rs +++ b/src/service/deactivate/mod.rs @@ -12,7 +12,7 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone() })) } diff --git a/src/service/emergency/mod.rs b/src/service/emergency/mod.rs index 0be337ef9..631f44003 100644 --- a/src/service/emergency/mod.rs +++ b/src/service/emergency/mod.rs @@ -15,7 +15,7 @@ pub struct Service { #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone() })) } diff --git a/src/service/federation/mod.rs b/src/service/federation/mod.rs index 2ede4b828..0e23f1163 100644 --- a/src/service/federation/mod.rs +++ b/src/service/federation/mod.rs @@ -12,7 +12,7 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone() })) } diff --git a/src/service/globals/mod.rs b/src/service/globals/mod.rs index ffa088929..092f85195 100644 --- a/src/service/globals/mod.rs +++ b/src/service/globals/mod.rs @@ -33,8 +33,8 @@ type RateLimitState = (Instant, u32); // Time if last failed try, number of fail #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { - let db = Data::new(&args); + fn build(args: &crate::Args<'_>) -> Result> { + let db = Data::new(args); let config = &args.server.config; let turn_secret = config.turn_secret_file.as_ref().map_or_else( diff --git a/src/service/key_backups/mod.rs b/src/service/key_backups/mod.rs index 291ac8878..1386100fa 100644 --- a/src/service/key_backups/mod.rs +++ b/src/service/key_backups/mod.rs @@ -24,7 +24,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { backupid_algorithm: args.db["backupid_algorithm"].clone(), diff --git a/src/service/media/mod.rs b/src/service/media/mod.rs index b83786d18..a7bbd8643 100644 --- a/src/service/media/mod.rs +++ b/src/service/media/mod.rs @@ -47,7 +47,7 @@ pub const CORP_CROSS_ORIGIN: &str = "cross-origin"; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { url_preview_mutex: MutexMap::new(), db: Data::new(args.db), diff --git a/src/service/membership/mod.rs b/src/service/membership/mod.rs index c065ed379..1b8e66ee2 100644 --- a/src/service/membership/mod.rs +++ b/src/service/membership/mod.rs @@ -14,7 +14,7 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone() })) } diff --git a/src/service/presence/mod.rs b/src/service/presence/mod.rs index 725ecb025..efe4dc3c9 100644 --- a/src/service/presence/mod.rs +++ b/src/service/presence/mod.rs @@ -26,7 +26,7 @@ type TimerType = (OwnedUserId, Duration); #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { let config = &args.server.config; let idle_timeout_s = config.presence_idle_timeout_s; let offline_timeout_s = config.presence_offline_timeout_s; @@ -35,7 +35,7 @@ impl crate::Service for Service { timeout_remote_users: config.presence_timeout_remote_users, idle_timeout: checked!(idle_timeout_s * 1_000)?, offline_timeout: checked!(offline_timeout_s * 1_000)?, - db: Data::new(&args), + db: Data::new(args), services: args.services.clone(), last_sync_seen: RwLock::new(HashMap::new()), })) diff --git a/src/service/pusher/mod.rs b/src/service/pusher/mod.rs index 37869a110..071b4eec9 100644 --- a/src/service/pusher/mod.rs +++ b/src/service/pusher/mod.rs @@ -43,7 +43,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { senderkey_pusher: args.db["senderkey_pusher"].clone(), diff --git a/src/service/resolver/mod.rs b/src/service/resolver/mod.rs index 9a23e5d8d..56cadc60c 100644 --- a/src/service/resolver/mod.rs +++ b/src/service/resolver/mod.rs @@ -30,8 +30,8 @@ impl crate::Service for Service { clippy::cast_sign_loss, clippy::cast_possible_truncation )] - fn build(args: crate::Args<'_>) -> Result> { - let cache = Cache::new(&args); + fn build(args: &crate::Args<'_>) -> Result> { + let cache = Cache::new(args); Ok(Arc::new(Self { cache: cache.clone(), resolver: Resolver::build(args.server, cache)?, diff --git a/src/service/rooms/alias/mod.rs b/src/service/rooms/alias/mod.rs index 360054080..0579eb6aa 100644 --- a/src/service/rooms/alias/mod.rs +++ b/src/service/rooms/alias/mod.rs @@ -28,7 +28,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { alias_userid: args.db["alias_userid"].clone(), diff --git a/src/service/rooms/auth_chain/mod.rs b/src/service/rooms/auth_chain/mod.rs index ea1ac8104..738bddd49 100644 --- a/src/service/rooms/auth_chain/mod.rs +++ b/src/service/rooms/auth_chain/mod.rs @@ -31,10 +31,10 @@ pub struct Service { type Bucket<'a> = BTreeSet<(u64, &'a EventId)>; impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), - db: Data::new(&args), + db: Data::new(args), })) } diff --git a/src/service/rooms/delete/mod.rs b/src/service/rooms/delete/mod.rs index 959c7e3b5..26f897da2 100644 --- a/src/service/rooms/delete/mod.rs +++ b/src/service/rooms/delete/mod.rs @@ -17,7 +17,7 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone() })) } diff --git a/src/service/rooms/directory/mod.rs b/src/service/rooms/directory/mod.rs index 40fa532be..f31c8677b 100644 --- a/src/service/rooms/directory/mod.rs +++ b/src/service/rooms/directory/mod.rs @@ -14,7 +14,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { publicroomids: args.db["publicroomids"].clone(), diff --git a/src/service/rooms/event_handler/mod.rs b/src/service/rooms/event_handler/mod.rs index 2a10b8db3..ee95c1673 100644 --- a/src/service/rooms/event_handler/mod.rs +++ b/src/service/rooms/event_handler/mod.rs @@ -35,7 +35,7 @@ type RoomMutexMap = MutexMap; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { mutex_federation: RoomMutexMap::new(), services: args.services.clone(), diff --git a/src/service/rooms/lazy_loading/mod.rs b/src/service/rooms/lazy_loading/mod.rs index 075642558..f892ddf8e 100644 --- a/src/service/rooms/lazy_loading/mod.rs +++ b/src/service/rooms/lazy_loading/mod.rs @@ -43,7 +43,7 @@ pub type Witness = HashSet; type Key<'a> = (&'a UserId, Option<&'a DeviceId>, &'a RoomId, &'a UserId); impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { lazyloadedids: args.db["lazyloadedids"].clone(), diff --git a/src/service/rooms/metadata/mod.rs b/src/service/rooms/metadata/mod.rs index 3f6d1d504..06be9aff4 100644 --- a/src/service/rooms/metadata/mod.rs +++ b/src/service/rooms/metadata/mod.rs @@ -24,7 +24,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { disabledroomids: args.db["disabledroomids"].clone(), diff --git a/src/service/rooms/pdu_metadata/mod.rs b/src/service/rooms/pdu_metadata/mod.rs index 7487975c7..bed342a36 100644 --- a/src/service/rooms/pdu_metadata/mod.rs +++ b/src/service/rooms/pdu_metadata/mod.rs @@ -16,10 +16,10 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), - db: Data::new(&args), + db: Data::new(args), })) } diff --git a/src/service/rooms/read_receipt/mod.rs b/src/service/rooms/read_receipt/mod.rs index 209fd2d41..37be64f97 100644 --- a/src/service/rooms/read_receipt/mod.rs +++ b/src/service/rooms/read_receipt/mod.rs @@ -28,10 +28,10 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), - db: Data::new(&args), + db: Data::new(args), })) } diff --git a/src/service/rooms/search/mod.rs b/src/service/rooms/search/mod.rs index 6e0078870..31168697c 100644 --- a/src/service/rooms/search/mod.rs +++ b/src/service/rooms/search/mod.rs @@ -45,7 +45,7 @@ const TOKEN_ID_MAX_LEN: usize = const WORD_MAX_LEN: usize = 50; impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { tokenids: args.db["tokenids"].clone() }, services: args.services.clone(), diff --git a/src/service/rooms/short/mod.rs b/src/service/rooms/short/mod.rs index e32b3bad6..ba8908fdd 100644 --- a/src/service/rooms/short/mod.rs +++ b/src/service/rooms/short/mod.rs @@ -24,7 +24,7 @@ struct Data { pub type ShortStateHash = ShortId; impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { eventid_shorteventid: args.db["eventid_shorteventid"].clone(), diff --git a/src/service/rooms/spaces/mod.rs b/src/service/rooms/spaces/mod.rs index 1000be7dc..3e181b858 100644 --- a/src/service/rooms/spaces/mod.rs +++ b/src/service/rooms/spaces/mod.rs @@ -59,7 +59,7 @@ type Cache = LruCache>; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { let config = &args.server.config; let cache_size = f64::from(config.roomid_spacehierarchy_cache_capacity); let cache_size = cache_size * config.cache_capacity_modifier; diff --git a/src/service/rooms/state/mod.rs b/src/service/rooms/state/mod.rs index d915e71f2..106de8969 100644 --- a/src/service/rooms/state/mod.rs +++ b/src/service/rooms/state/mod.rs @@ -51,7 +51,7 @@ pub type RoomMutexGuard = MutexMapGuard; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { mutex: RoomMutexMap::new(), services: args.services.clone(), diff --git a/src/service/rooms/state_accessor/mod.rs b/src/service/rooms/state_accessor/mod.rs index 4bdd4091b..8c15c4519 100644 --- a/src/service/rooms/state_accessor/mod.rs +++ b/src/service/rooms/state_accessor/mod.rs @@ -44,7 +44,7 @@ struct Data { #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), db: Data { diff --git a/src/service/rooms/state_cache/mod.rs b/src/service/rooms/state_cache/mod.rs index 939f5dea0..a57531eee 100644 --- a/src/service/rooms/state_cache/mod.rs +++ b/src/service/rooms/state_cache/mod.rs @@ -52,7 +52,7 @@ type StrippedStateEventItem = (OwnedRoomId, Vec>); type SyncStateEventItem = (OwnedRoomId, Vec>); impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { appservice_in_room_cache: RwLock::new(HashMap::new()), services: args.services.clone(), diff --git a/src/service/rooms/state_compressor/mod.rs b/src/service/rooms/state_compressor/mod.rs index 53854cd79..222912aa6 100644 --- a/src/service/rooms/state_compressor/mod.rs +++ b/src/service/rooms/state_compressor/mod.rs @@ -60,7 +60,7 @@ pub type CompressedStateEvent = [u8; 2 * size_of::()]; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { let config = &args.server.config; let cache_capacity = f64::from(config.stateinfo_cache_capacity) * config.cache_capacity_modifier; diff --git a/src/service/rooms/threads/mod.rs b/src/service/rooms/threads/mod.rs index 7ddece266..b47247b80 100644 --- a/src/service/rooms/threads/mod.rs +++ b/src/service/rooms/threads/mod.rs @@ -27,7 +27,7 @@ pub(super) struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { threadid_userids: args.db["threadid_userids"].clone(), diff --git a/src/service/rooms/timeline/mod.rs b/src/service/rooms/timeline/mod.rs index 85a0ab235..c494f1cd5 100644 --- a/src/service/rooms/timeline/mod.rs +++ b/src/service/rooms/timeline/mod.rs @@ -79,7 +79,7 @@ pub type PdusIterItem = (PduCount, PduEvent); #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), db: Data { diff --git a/src/service/rooms/typing/mod.rs b/src/service/rooms/typing/mod.rs index 434d10b17..74731082a 100644 --- a/src/service/rooms/typing/mod.rs +++ b/src/service/rooms/typing/mod.rs @@ -24,7 +24,7 @@ pub struct Service { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { server: args.server.clone(), services: args.services.clone(), diff --git a/src/service/rooms/user/mod.rs b/src/service/rooms/user/mod.rs index e9c29e5b6..341135dc8 100644 --- a/src/service/rooms/user/mod.rs +++ b/src/service/rooms/user/mod.rs @@ -23,7 +23,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { db: args.db.clone(), diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs index db729d8e9..d998d063b 100644 --- a/src/service/sending/mod.rs +++ b/src/service/sending/mod.rs @@ -61,10 +61,10 @@ const EDU_VEC_CAP: usize = 1; #[async_trait] impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { - let num_senders = num_senders(&args); + fn build(args: &crate::Args<'_>) -> Result> { + let num_senders = num_senders(args); Ok(Arc::new(Self { - db: Data::new(&args), + db: Data::new(args), server: args.server.clone(), services: args.services.clone(), channels: (0..num_senders) diff --git a/src/service/server_keys/mod.rs b/src/service/server_keys/mod.rs index 234b46694..24d872c49 100644 --- a/src/service/server_keys/mod.rs +++ b/src/service/server_keys/mod.rs @@ -40,7 +40,7 @@ pub type PubKeyMap = PublicKeyMap; pub type PubKeys = PublicKeySet; impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { let minimum_valid = Duration::from_secs(3600); let (keypair, verify_keys) = keypair::init(args.db)?; diff --git a/src/service/service.rs b/src/service/service.rs index a8fbf5ca4..1e57c3f0d 100644 --- a/src/service/service.rs +++ b/src/service/service.rs @@ -14,7 +14,7 @@ pub(crate) trait Service: Any + Send + Sync { /// service type. Note that it may be called again after a server reload, /// but the prior instance will have been dropped first. Failure will /// shutdown the server with an error. - fn build(args: Args<'_>) -> Result> + fn build(args: &Args<'_>) -> Result> where Self: Sized; diff --git a/src/service/services.rs b/src/service/services.rs index 22d82b13e..aa1eaa978 100644 --- a/src/service/services.rs +++ b/src/service/services.rs @@ -69,58 +69,54 @@ pub struct Services { pub async fn build(server: Arc) -> Result> { let db = Database::open(&server).await?; let services = Arc::new(OnceServices::default()); - macro_rules! build { - ($tyname:ty) => { - <$tyname>::build(Args { - db: &db, - server: &server, - services: &services, - })? - }; - } + let args = Args { + db: &db, + server: &server, + services: &services, + }; let res = Arc::new(Self { - account_data: build!(account_data::Service), - admin: build!(admin::Service), - appservice: build!(appservice::Service), - resolver: build!(resolver::Service), - client: build!(client::Service), - config: build!(config::Service), - emergency: build!(emergency::Service), - globals: build!(globals::Service), - key_backups: build!(key_backups::Service), - media: build!(media::Service), - presence: build!(presence::Service), - pusher: build!(pusher::Service), - alias: build!(rooms::alias::Service), - auth_chain: build!(rooms::auth_chain::Service), - delete: build!(rooms::delete::Service), - directory: build!(rooms::directory::Service), - event_handler: build!(rooms::event_handler::Service), - lazy_loading: build!(rooms::lazy_loading::Service), - metadata: build!(rooms::metadata::Service), - pdu_metadata: build!(rooms::pdu_metadata::Service), - read_receipt: build!(rooms::read_receipt::Service), - search: build!(rooms::search::Service), - short: build!(rooms::short::Service), - spaces: build!(rooms::spaces::Service), - state: build!(rooms::state::Service), - state_accessor: build!(rooms::state_accessor::Service), - state_cache: build!(rooms::state_cache::Service), - state_compressor: build!(rooms::state_compressor::Service), - threads: build!(rooms::threads::Service), - timeline: build!(rooms::timeline::Service), - typing: build!(rooms::typing::Service), - user: build!(rooms::user::Service), - federation: build!(federation::Service), - sending: build!(sending::Service), - server_keys: build!(server_keys::Service), - sync: build!(sync::Service), - transaction_ids: build!(transaction_ids::Service), - uiaa: build!(uiaa::Service), - users: build!(users::Service), - membership: build!(membership::Service), - deactivate: build!(deactivate::Service), + account_data: account_data::Service::build(&args)?, + admin: admin::Service::build(&args)?, + appservice: appservice::Service::build(&args)?, + resolver: resolver::Service::build(&args)?, + client: client::Service::build(&args)?, + config: config::Service::build(&args)?, + emergency: emergency::Service::build(&args)?, + globals: globals::Service::build(&args)?, + key_backups: key_backups::Service::build(&args)?, + media: media::Service::build(&args)?, + presence: presence::Service::build(&args)?, + pusher: pusher::Service::build(&args)?, + alias: rooms::alias::Service::build(&args)?, + auth_chain: rooms::auth_chain::Service::build(&args)?, + delete: rooms::delete::Service::build(&args)?, + directory: rooms::directory::Service::build(&args)?, + event_handler: rooms::event_handler::Service::build(&args)?, + lazy_loading: rooms::lazy_loading::Service::build(&args)?, + metadata: rooms::metadata::Service::build(&args)?, + pdu_metadata: rooms::pdu_metadata::Service::build(&args)?, + read_receipt: rooms::read_receipt::Service::build(&args)?, + search: rooms::search::Service::build(&args)?, + short: rooms::short::Service::build(&args)?, + spaces: rooms::spaces::Service::build(&args)?, + state: rooms::state::Service::build(&args)?, + state_accessor: rooms::state_accessor::Service::build(&args)?, + state_cache: rooms::state_cache::Service::build(&args)?, + state_compressor: rooms::state_compressor::Service::build(&args)?, + threads: rooms::threads::Service::build(&args)?, + timeline: rooms::timeline::Service::build(&args)?, + typing: rooms::typing::Service::build(&args)?, + user: rooms::user::Service::build(&args)?, + federation: federation::Service::build(&args)?, + sending: sending::Service::build(&args)?, + server_keys: server_keys::Service::build(&args)?, + sync: sync::Service::build(&args)?, + transaction_ids: transaction_ids::Service::build(&args)?, + uiaa: uiaa::Service::build(&args)?, + users: users::Service::build(&args)?, + membership: membership::Service::build(&args)?, + deactivate: deactivate::Service::build(&args)?, manager: Mutex::new(None), server, diff --git a/src/service/sync/mod.rs b/src/service/sync/mod.rs index d0dd397ab..a6370191d 100644 --- a/src/service/sync/mod.rs +++ b/src/service/sync/mod.rs @@ -51,7 +51,7 @@ pub type ListId = SmallString<[u8; 16]>; pub type ConnId = SmallString<[u8; 16]>; impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { todeviceid_events: args.db["todeviceid_events"].clone(), diff --git a/src/service/transaction_ids/mod.rs b/src/service/transaction_ids/mod.rs index 7ba9e3035..167313114 100644 --- a/src/service/transaction_ids/mod.rs +++ b/src/service/transaction_ids/mod.rs @@ -13,7 +13,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { db: Data { userdevicetxnid_response: args.db["userdevicetxnid_response"].clone(), diff --git a/src/service/uiaa/mod.rs b/src/service/uiaa/mod.rs index 93333c081..f353d779b 100644 --- a/src/service/uiaa/mod.rs +++ b/src/service/uiaa/mod.rs @@ -32,7 +32,7 @@ type RequestKey = (OwnedUserId, OwnedDeviceId, String); pub const SESSION_ID_LENGTH: usize = 32; impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { userdevicesessionid_uiaarequest: RwLock::new(RequestMap::new()), db: Data { diff --git a/src/service/users/mod.rs b/src/service/users/mod.rs index 1761b5de7..3ec1d7d7e 100644 --- a/src/service/users/mod.rs +++ b/src/service/users/mod.rs @@ -57,7 +57,7 @@ struct Data { } impl crate::Service for Service { - fn build(args: crate::Args<'_>) -> Result> { + fn build(args: &crate::Args<'_>) -> Result> { Ok(Arc::new(Self { services: args.services.clone(), db: Data {