Skip to main content

limnus_scheduler_runner/
lib.rs

1/*
2 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/swamp/limnus
3 * Licensed under the MIT License. See LICENSE in the project root for license information.
4 */
5use 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}