1pub mod config;
4pub mod control;
5pub mod error;
6#[cfg(feature = "harness")]
7pub mod harness;
8#[cfg(feature = "m4a")]
9pub mod m4a;
10#[cfg(feature = "memory")]
11pub mod memory;
12pub mod subservice;
13pub mod supervisor;
14
15pub use config::ServerConfig;
16pub use error::ServerError;
17pub use subservice::{State, Status, Subservice};
18pub use supervisor::Supervisor;
19
20pub fn build_subservices(config: &ServerConfig) -> Vec<Box<dyn Subservice>> {
22 #[allow(unused_mut)]
23 let mut services: Vec<Box<dyn Subservice>> = Vec::new();
24 #[cfg(feature = "harness")]
25 if config.harness_enabled {
26 if let Some(bin) = config.harness_bin.clone() {
27 services.push(Box::new(harness::HarnessSubservice::new(bin, config.harness_args.clone())));
28 }
29 }
30 #[cfg(feature = "m4a")]
31 if config.m4a_enabled {
32 services.push(Box::new(m4a::M4aSubservice::new(
33 &config.data_dir,
34 config.m4a_master_key_var.clone(),
35 )));
36 }
37 #[cfg(feature = "memory")]
38 services.push(Box::new(memory::MemorySubservice::new(
39 config.memory_bin.clone(),
40 &config.data_dir,
41 )));
42 let _ = config;
43 services
44}