use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct DeterminismConfig {
pub seed: Option<u64>,
pub freeze_clock: Option<String>,
}
impl DeterminismConfig {
pub fn new() -> Self {
Self::default()
}
pub fn with_seed(mut self, seed: u64) -> Self {
self.seed = Some(seed);
self
}
pub fn with_freeze_clock(mut self, timestamp: String) -> Self {
self.freeze_clock = Some(timestamp);
self
}
pub fn is_deterministic(&self) -> bool {
self.seed.is_some() || self.freeze_clock.is_some()
}
pub fn has_seed(&self) -> bool {
self.seed.is_some()
}
pub fn has_frozen_clock(&self) -> bool {
self.freeze_clock.is_some()
}
pub fn get_seed(&self) -> Option<u64> {
self.seed
}
pub fn get_freeze_clock(&self) -> Option<&str> {
self.freeze_clock.as_deref()
}
}