Update config with human readable parsing

This commit is contained in:
Daniel Sanchez Quiros 2024-11-08 13:04:26 +07:00
parent a7dc4aa410
commit a3764d85c3
3 changed files with 16 additions and 4 deletions

View File

@ -8,6 +8,7 @@ anyhow = "1.0.93"
clap = { version = "4.5.20", features = ["derive"] }
crossbeam = "0.8.4"
ctrlc = "3.4"
humantime = "2"
parking_lot = "0.12.3"
rand = "0.8"
serde = { version = "1.0.214", features = ["derive"] }

View File

@ -38,12 +38,12 @@
],
"connected_peers_count": 3,
"data_message_lottery_interval": "20s",
"stake_proportion": "1.0",
"stake_proportion": 1.0,
"epoch_duration": "432000s",
"slot_duration": "20s",
"persistent_transmission": {
"max_emission_frequency": "1.0",
"drop_message_probability": "0.0"
"max_emission_frequency": 1.0,
"drop_message_probability": 0.0
},
"number_of_mix_layers": 4,
"max_delay_seconds": 10,

View File

@ -1,6 +1,6 @@
use netrunner::settings::SimulationSettings;
use nomos_mix::persistent_transmission::PersistentTransmissionSettings;
use serde::Deserialize;
use serde::{Deserialize, Deserializer};
use std::time::Duration;
#[derive(Deserialize)]
@ -8,12 +8,23 @@ pub struct SimSettings {
#[serde(flatten)]
pub simulation_settings: SimulationSettings,
pub connected_peers_count: usize,
#[serde(deserialize_with = "deserialize_duration_with_human_time")]
pub data_message_lottery_interval: Duration,
pub stake_proportion: f64,
#[serde(deserialize_with = "deserialize_duration_with_human_time")]
pub epoch_duration: Duration,
#[serde(deserialize_with = "deserialize_duration_with_human_time")]
pub slot_duration: Duration,
pub persistent_transmission: PersistentTransmissionSettings,
pub number_of_mix_layers: usize,
pub max_delay_seconds: u64,
pub slots_per_epoch: usize,
}
fn deserialize_duration_with_human_time<'de, D>(deserializer: D) -> Result<Duration, D::Error>
where
D: Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
humantime::parse_duration(&s).map_err(serde::de::Error::custom)
}