limnus_scheduler_runner/
lib.rs1use limnus_scheduler::Scheduler;
6use limnus_stage::Stages;
7use limnus_system_state::State;
8
9#[derive(Default)]
10pub struct Runner {
11 schedulers: Vec<Box<dyn Scheduler>>,
12}
13
14impl Runner {
15 #[must_use]
16 pub fn new() -> Self {
17 Self {
18 schedulers: Vec::new(),
19 }
20 }
21
22 pub fn add_scheduler<T>(&mut self, schedule: T)
23 where
24 T: Scheduler,
25 {
26 self.schedulers.push(Box::new(schedule));
27 }
28
29 pub fn run_schedulers(&self, stages: &Stages, state: &mut State) {
30 for scheduler in &self.schedulers {
31 scheduler.schedule(stages, state);
32 }
33 }
34}