aboutsummaryrefslogtreecommitdiff
path: root/karld/src/schedule.rs
blob: 0d0e783e459688dac72a31e1824db596a54a612a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use chrono::NaiveDateTime;
use karlcommon::{Schedule, Task};

use crate::TASKS;

pub fn schedule_dynamic() {
    let tasks = TASKS.write().unwrap();

    let colliders = tasks.values().filter(|t| !t.schedule.is_dynamic());
    let mut dynamic = tasks
        .values()
        .filter(|t| t.schedule.is_dynamic())
        .collect::<Vec<_>>();

    dynamic.sort_by_key(|t| {
        if let Schedule::Dynamic { priority, .. } = t.schedule {
            // TODO increase precision by using floats
            (priority * 1000.0) as i64
        } else {
            0
        }
    })
}