dscale 0.5.2

A fast & deterministic simulation framework for benchmarking and testing distributed systems
Documentation
use crate::{global::kv, pid, random::Seed};

pub(crate) fn setup_global_configuration(proc_num: usize) {
    kv::set::<usize>("proc_num", proc_num)
}

pub(crate) fn setup_local_configuration(proc_num: usize, base_seed: Seed) {
    (0..proc_num).for_each(|pid| {
        // Prevent resonance between procs by changing seed a little bit
        kv::set::<u64>(&format!("seeds/{}", pid), base_seed + pid as u64)
    });
}

/// Returns the deterministic seed for the currently executing process.
pub fn seed() -> Seed {
    kv::get::<u64>(&format!("seeds/{}", pid()))
}

/// Returns the total number of processes in the simulation.
pub fn process_number() -> usize {
    kv::get::<usize>("proc_num")
}