aboutsummaryrefslogtreecommitdiff
path: root/karld/src/schedule.rs
diff options
context:
space:
mode:
authormetamuffin <yvchraiqi@protonmail.com>2022-06-13 12:21:07 +0200
committermetamuffin <yvchraiqi@protonmail.com>2022-06-13 12:21:07 +0200
commita7abc26af31b69db06a5875fc3fbc756adc838b1 (patch)
treeb98d56b7572039a90ac6f23d76f38ce2ad66845c /karld/src/schedule.rs
parent1441b718c9bbf8016f563cfc89f4ee322e4f42e4 (diff)
downloadkarlender-a7abc26af31b69db06a5875fc3fbc756adc838b1.tar
karlender-a7abc26af31b69db06a5875fc3fbc756adc838b1.tar.bz2
karlender-a7abc26af31b69db06a5875fc3fbc756adc838b1.tar.zst
blub
Diffstat (limited to 'karld/src/schedule.rs')
-rw-r--r--karld/src/schedule.rs43
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!()
+ }
}