1pub mod aet;
2pub mod analysis;
3pub mod config;
4pub mod iwlt;
5pub mod output;
6pub mod rlt;
7pub mod sweep;
8pub mod tcp;
9
10use thiserror::Error;
11
12pub use aet::AetSweep;
13pub use config::SimulationConfig;
14pub use iwlt::IwltSweep;
15pub use output::create_timestamped_output_dir;
16pub use rlt::RltSweep;
17pub use sweep::{run_sweeps_into_dir, SweepResult};
18pub use tcp::{TcpPoint, TcpSweep};
19
20#[derive(Debug, Error)]
21pub enum AddError {
22 #[error("io error: {0}")]
23 Io(#[from] std::io::Error),
24 #[error("csv error: {0}")]
25 Csv(#[from] csv::Error),
26 #[error("json error: {0}")]
27 Json(#[from] serde_json::Error),
28 #[error("invalid configuration: {0}")]
29 InvalidConfig(String),
30 #[error("{context} length mismatch: expected {expected}, got {got}")]
31 LengthMismatch {
32 context: &'static str,
33 expected: usize,
34 got: usize,
35 },
36}
37
38pub fn run_all_sweeps(config: &SimulationConfig) -> Result<(), AddError> {
39 let output_dir = create_timestamped_output_dir()?;
40 sweep::run_sweeps_into_dir(config, &output_dir)?;
41 Ok(())
42}