1pub use crate::entity::{timestamp, timestamp_micros, DelayTimer, DelayTimerBuilder};
14pub use crate::error::*;
15pub use crate::timer::runtime_trace::state::instance;
16pub use crate::timer::runtime_trace::task_handle::DelayTaskHandler;
17pub use crate::timer::runtime_trace::task_instance::{Instance, TaskInstance, TaskInstancesChain};
18pub use crate::timer::task::TaskContext;
19pub use crate::timer::task::{
20 FrequencyCronStr as Frequency, ScheduleIteratorTimeZone, Task, TaskBuilder,
21};
22pub use crate::timer::timer_core::{FinishOutput, FinishTaskBody, TimerEvent};
23
24pub use crate::utils::convenience::cron_expression_grammatical_candy::{
25 CandyCron, CandyCronStr, CandyFrequency,
26};
27pub use crate::utils::convenience::functions::{
28 create_default_delay_task_handler, create_delay_task_handler,
29};
30
31pub use anyhow::{anyhow, Result as AnyResult};
32pub use cron_clock::{self, error as cron_error, FixedOffset, Local, TimeZone, Utc};
33pub use smol::channel;
34pub use smol::future as future_lite;
35pub use smol::spawn as async_spawn_by_smol;
36pub use smol::unblock as unblock_spawn_by_smol;
37pub use smol::Task as SmolJoinHandler;
38pub use thiserror::Error;
39
40pub type InstanceState = usize;
42
43pub(crate) use crate::entity::RuntimeKind;
44pub(crate) use crate::timer::event_handle::SharedHeader;
45pub(crate) use crate::timer::runtime_trace::state;
46pub(crate) use crate::timer::runtime_trace::task_handle::DelayTaskHandlerBox;
47pub(crate) use crate::timer::runtime_trace::task_handle::DelayTaskHandlerBoxBuilder;
48pub(crate) use crate::timer::runtime_trace::task_instance::TaskInstancesChainMaintainer;
49pub(crate) use crate::timer::task::Routine;
50
51pub(crate) use crate::utils::parse::shell_command::{ChildGuard, ChildGuardList, ChildUnify};
52pub(crate) use dashmap::DashMap;
53pub(crate) use log::{debug, error, trace};
54pub(crate) use smol::channel::{unbounded, Receiver as AsyncReceiver, Sender as AsyncSender};
55pub(crate) use smol::future::yield_now;
56pub(crate) use smol::lock::Mutex as AsyncMutex;
57pub(crate) use smol::Timer as AsyncTimer;
58pub(crate) use std::convert::{TryFrom, TryInto};
59pub(crate) use std::future::Future;
60pub(crate) use std::iter::StepBy;
61pub(crate) use std::ops::RangeFrom;
62pub(crate) use std::process::ExitStatus;
63pub(crate) use std::time::Duration;
64pub(crate) use tracing::{info_span, instrument, Instrument};
65
66pub(crate) type SecondsState = StepBy<RangeFrom<u64>>;
67pub(crate) type TimerEventSender = AsyncSender<TimerEvent>;
68pub(crate) type TimerEventReceiver = AsyncReceiver<TimerEvent>;
69
70pub use tokio::task::{
71 spawn as async_spawn_by_tokio, spawn_blocking as unblock_spawn_by_tokio,
72 JoinHandle as TokioJoinHandle,
73};
74pub use tokio::time::sleep as sleep_by_tokio;
75
76cfg_status_report!(
77 pub use crate::utils::status_report::PublicEvent;
78 pub(crate) use crate::utils::status_report::GLOBAL_STATUS_REPORTER;
79);
80
81#[cfg(target_family = "unix")]
82pub(crate) use std::os::unix::process::ExitStatusExt;
83#[cfg(target_family = "windows")]
84pub(crate) use std::os::windows::process::ExitStatusExt;
85
86pub(crate) const ONE_SECOND: u64 = 1;
87pub(crate) const ONE_MINUTE: u64 = ONE_SECOND * 60;
88pub(crate) const ONE_HOUR: u64 = ONE_MINUTE * 60;
89pub(crate) const ONE_DAY: u64 = ONE_HOUR * 24;