pub mod actual; pub mod cache; mod dns; pub mod fed; mod tests; use std::sync::Arc; use conduwuit::{Result, Server, arrayvec::ArrayString, utils::MutexMap}; use self::{cache::Cache, dns::Resolver}; use crate::{Dep, client}; pub struct Service { pub cache: Arc, pub resolver: Arc, resolving: Resolving, services: Services, } struct Services { server: Arc, client: Dep, } type Resolving = MutexMap; type NameBuf = ArrayString<256>; impl crate::Service for Service { #[allow(clippy::as_conversions, clippy::cast_sign_loss, clippy::cast_possible_truncation)] fn build(args: crate::Args<'_>) -> Result> { let cache = Cache::new(&args); Ok(Arc::new(Self { cache: cache.clone(), resolver: Resolver::build(args.server, cache)?, resolving: MutexMap::new(), services: Services { server: args.server.clone(), client: args.depend::("client"), }, })) } fn name(&self) -> &str { crate::service::make_name(std::module_path!()) } }