1#![deny(missing_docs)]
14
15mod placement;
16mod runtime;
17mod task;
18
19pub use placement::{
20 PlacementCandidate, PlacementDecision, PlacementEngine, PlacementEvaluation,
21 PlacementRejection, PlacementRequest, ResourceRequest,
22};
23pub use runtime::{Scheduler, TaskHandle};
24pub use task::{
25 RetryPolicy, ScheduledTask, SchedulerConfig, SchedulerError, SchedulerSnapshot, TaskCallback,
26 TaskContext, TaskResult, TaskSchedule, TaskSnapshot,
27};
28
29use appcore_core::{redact_text, TraceContext};
30use chrono::{DateTime, Utc};
31use cron::Schedule;
32use parking_lot::{Condvar, Mutex};
33use std::collections::HashMap;
34use std::fmt;
35use std::panic::{catch_unwind, AssertUnwindSafe};
36use std::str::FromStr;
37use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering};
38use std::sync::{Arc, Weak};
39use std::thread::{self, JoinHandle};
40use std::time::{Duration, SystemTime, UNIX_EPOCH};
41
42const MAX_TASK_ID_BYTES: usize = 128;
43
44#[cfg(test)]
45mod tests;