1
0
Fork 0
mirror of https://gitlab.com/famedly/conduit.git synced 2025-06-27 16:35:59 +00:00
conduit/src/service/mod.rs

107 lines
3.8 KiB
Rust
Raw Normal View History

2022-10-05 18:36:12 +02:00
use std::{
collections::{BTreeMap, HashMap},
sync::{Arc, Mutex},
};
2022-10-05 20:33:55 +02:00
use lru_cache::LruCache;
2022-10-05 20:34:31 +02:00
use crate::{Config, Result};
2022-10-05 12:45:54 +02:00
pub mod account_data;
pub mod admin;
2022-09-07 13:25:51 +02:00
pub mod appservice;
pub mod globals;
pub mod key_backups;
pub mod media;
2022-09-07 13:25:51 +02:00
pub mod pdu;
pub mod pusher;
pub mod rooms;
pub mod sending;
2022-09-07 13:25:51 +02:00
pub mod transaction_ids;
pub mod uiaa;
pub mod users;
2022-10-05 12:45:54 +02:00
pub struct Services {
pub appservice: appservice::Service,
pub pusher: pusher::Service,
pub rooms: rooms::Service,
pub transaction_ids: transaction_ids::Service,
pub uiaa: uiaa::Service,
pub users: users::Service,
pub account_data: account_data::Service,
2022-09-07 13:25:51 +02:00
pub admin: admin::Service,
2022-10-05 12:45:54 +02:00
pub globals: globals::Service,
pub key_backups: key_backups::Service,
pub media: media::Service,
2022-09-07 13:25:51 +02:00
pub sending: sending::Service,
}
2022-10-05 12:45:54 +02:00
impl Services {
2022-10-05 18:36:12 +02:00
pub fn build<
D: appservice::Data
+ pusher::Data
+ rooms::Data
+ transaction_ids::Data
+ uiaa::Data
+ users::Data
+ account_data::Data
+ globals::Data
+ key_backups::Data
+ media::Data,
>(
2022-10-05 20:34:31 +02:00
db: Arc<D>,
config: Config,
2022-10-05 18:36:12 +02:00
) -> Result<Self> {
Ok(Self {
2022-10-05 15:33:57 +02:00
appservice: appservice::Service { db: db.clone() },
pusher: pusher::Service { db: db.clone() },
2022-10-05 18:36:12 +02:00
rooms: rooms::Service {
alias: rooms::alias::Service { db: db.clone() },
auth_chain: rooms::auth_chain::Service { db: db.clone() },
directory: rooms::directory::Service { db: db.clone() },
edus: rooms::edus::Service {
presence: rooms::edus::presence::Service { db: db.clone() },
read_receipt: rooms::edus::read_receipt::Service { db: db.clone() },
typing: rooms::edus::typing::Service { db: db.clone() },
},
event_handler: rooms::event_handler::Service,
lazy_loading: rooms::lazy_loading::Service {
db: db.clone(),
lazy_load_waiting: Mutex::new(HashMap::new()),
},
metadata: rooms::metadata::Service { db: db.clone() },
outlier: rooms::outlier::Service { db: db.clone() },
pdu_metadata: rooms::pdu_metadata::Service { db: db.clone() },
search: rooms::search::Service { db: db.clone() },
short: rooms::short::Service { db: db.clone() },
state: rooms::state::Service { db: db.clone() },
state_accessor: rooms::state_accessor::Service { db: db.clone() },
state_cache: rooms::state_cache::Service { db: db.clone() },
2022-10-05 20:34:31 +02:00
state_compressor: rooms::state_compressor::Service {
db: db.clone(),
stateinfo_cache: Mutex::new(LruCache::new(
(100.0 * config.conduit_cache_capacity_modifier) as usize,
)),
},
timeline: rooms::timeline::Service {
db: db.clone(),
lasttimelinecount_cache: Mutex::new(HashMap::new()),
},
2022-10-05 18:36:12 +02:00
user: rooms::user::Service { db: db.clone() },
},
2022-10-05 20:34:31 +02:00
transaction_ids: transaction_ids::Service { db: db.clone() },
uiaa: uiaa::Service { db: db.clone() },
users: users::Service { db: db.clone() },
account_data: account_data::Service { db: db.clone() },
2022-10-05 18:36:12 +02:00
admin: admin::Service { sender: todo!() },
globals: globals::Service::load(db.clone(), config)?,
2022-10-05 20:34:31 +02:00
key_backups: key_backups::Service { db: db.clone() },
media: media::Service { db: db.clone() },
2022-10-05 18:36:12 +02:00
sending: sending::Service {
maximum_requests: todo!(),
sender: todo!(),
},
})
2022-10-05 12:45:54 +02:00
}
}