diff --git a/src/service/account_data/mod.rs b/src/service/account_data/mod.rs index 2bf18e47..ce52c249 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 0383e038..6fd0353d 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 32776df4..cc44ef87 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 04910c4f..f7de6542 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 d6c13e8e..50eb332f 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 43c5fdeb..88443d26 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 0be337ef..631f4400 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 2ede4b82..0e23f116 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 ffa08892..092f8519 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 291ac887..1386100f 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 b83786d1..a7bbd864 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 c065ed37..1b8e66ee 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 725ecb02..efe4dc3c 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 37869a11..071b4eec 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 9a23e5d8..56cadc60 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 36005408..0579eb6a 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 ea1ac810..738bddd4 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 959c7e3b..26f897da 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 40fa532b..f31c8677 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 2a10b8db..ee95c167 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 07564255..f892ddf8 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 3f6d1d50..06be9aff 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 7487975c..bed342a3 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 209fd2d4..37be64f9 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 6e007887..31168697 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 e32b3bad..ba8908fd 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 1000be7d..3e181b85 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 d915e71f..106de896 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 4bdd4091..8c15c451 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 939f5dea..a57531ee 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 53854cd7..222912aa 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 7ddece26..b47247b8 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 85a0ab23..c494f1cd 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 434d10b1..74731082 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 e9c29e5b..341135dc 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 db729d8e..d998d063 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 234b4669..24d872c4 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 a8fbf5ca..1e57c3f0 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 22d82b13..aa1eaa97 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 d0dd397a..a6370191 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 7ba9e303..16731311 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 93333c08..f353d779 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 1761b5de..3ec1d7d7 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 {