mod clock;
mod common;
mod fault;
mod progress;
pub(crate) mod scalable;
pub(crate) mod simple;
pub(super) mod task;
pub(crate) mod threads;
pub(crate) mod workers;
use crate::jiffy::Jiffies;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RunStatus {
Completed { steps: usize },
BudgetExhausted { steps: usize },
NoMoreEvents { steps: usize },
}
impl RunStatus {
pub fn steps(&self) -> usize {
match *self {
RunStatus::Completed { steps }
| RunStatus::BudgetExhausted { steps }
| RunStatus::NoMoreEvents { steps } => steps,
}
}
}
pub trait SimulationRunner {
fn run_full_budget(&mut self) -> RunStatus;
fn run_steps(&mut self, k: usize) -> RunStatus;
fn run_sub_budget(&mut self, sub_budget: Jiffies) -> RunStatus;
}