Skip to main content

appcore_scheduler/
lib.rs

1// =============================================================================
2//        #######
3//     ###       ###     F: lib.rs
4//    ##   ## ##   ##    P: AppCore-Runtime
5//         ## ##
6//                       C: 2026/07/21 10:48:21 by dnettoRaw
7//    ##   ## ##   ##    U: 2026/07/23 23:50:45 by dnettoRaw
8//      ###########      S: 1.0.1-rc.8
9// =============================================================================
10
11//! Bounded local task scheduling with cooperative cancellation and clean shutdown.
12
13#![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;