use std::vec::Vec;
use job::Job;
#[derive(Default)]
pub struct Agenda<'a> {
jobs: Vec<Job<'a>>,
}
impl<'a> Agenda<'a> {
pub fn new() -> Agenda<'a> {
Default::default()
}
pub fn add(&mut self, job: Job<'a>) {
self.jobs.push(job);
self.jobs.sort_by_key(|j| j.next_run_at);
}
pub fn run_pending(&mut self) {
for job in &mut self.jobs {
if job.is_ready() {
job.run();
} else {
break;
}
}
self.jobs.sort_by_key(|j| j.next_run_at);
}
}