diff options
author | metamuffin <yvchraiqi@protonmail.com> | 2022-06-13 12:21:07 +0200 |
---|---|---|
committer | metamuffin <yvchraiqi@protonmail.com> | 2022-06-13 12:21:07 +0200 |
commit | a7abc26af31b69db06a5875fc3fbc756adc838b1 (patch) | |
tree | b98d56b7572039a90ac6f23d76f38ce2ad66845c /karld/src/schedule.rs | |
parent | 1441b718c9bbf8016f563cfc89f4ee322e4f42e4 (diff) | |
download | karlender-a7abc26af31b69db06a5875fc3fbc756adc838b1.tar karlender-a7abc26af31b69db06a5875fc3fbc756adc838b1.tar.bz2 karlender-a7abc26af31b69db06a5875fc3fbc756adc838b1.tar.zst |
blub
Diffstat (limited to 'karld/src/schedule.rs')
-rw-r--r-- | karld/src/schedule.rs | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/karld/src/schedule.rs b/karld/src/schedule.rs index 0d0e783..971c63a 100644 --- a/karld/src/schedule.rs +++ b/karld/src/schedule.rs @@ -1,16 +1,19 @@ -use chrono::NaiveDateTime; -use karlcommon::{Schedule, Task}; +use karlcommon::{Condition, Schedule}; use crate::TASKS; pub fn schedule_dynamic() { - let tasks = TASKS.write().unwrap(); + let mut 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<_>>(); + let mut colliders = vec![]; + let mut dynamic = vec![]; + for t in tasks.values_mut() { + if t.schedule.is_dynamic() { + dynamic.push(t) + } else { + colliders.push(t) + } + } dynamic.sort_by_key(|t| { if let Schedule::Dynamic { priority, .. } = t.schedule { @@ -19,5 +22,27 @@ pub fn schedule_dynamic() { } else { 0 } - }) + }); + + let cond = Condition::Invert(box Condition::Or( + colliders + .iter() + .map(|c| match &c.schedule { + Schedule::Never => Condition::Never, + Schedule::Condition(c) => c.clone(), + Schedule::Static(r) => Condition::Range { + min: r.start, + max: r.end, + modulus: None, + prop: karlcommon::Property::Unix, + }, + Schedule::Dynamic { .. } => unreachable!(), + }) + .collect(), + )); + println!("{:?}", cond); + + while dynamic.len() != 0 { + todo!() + } } |