1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! A "prelude" for users of the `delay-timer` crate.
//!
//! This prelude is similar to the standard library's prelude in that you'll
//! almost always want to import its entire contents, but unlike the standard
//! library's prelude you'll have to do so manually:
//!
//! ```
//! use delay_timer::prelude::*;
//! ```
//!
//! The prelude may grow over time as additional items see ubiquitous use.

pub use crate::entity::{get_timestamp, get_timestamp_micros, DelayTimer, DelayTimerBuilder};
pub use crate::error::*;
pub use crate::macros::*;
pub use crate::timer::runtime_trace::state::instance;
pub use crate::timer::runtime_trace::task_handle::DelayTaskHandler;
pub use crate::timer::runtime_trace::task_instance::{Instance, TaskInstance, TaskInstancesChain};
pub use crate::timer::task::TaskContext;
pub use crate::timer::task::{Frequency, ScheduleIteratorTimeZone, Task, TaskBuilder};
pub use crate::timer::timer_core::{FinishOutput, FinishTaskBody, TimerEvent};

pub use crate::utils::convenience::cron_expression_grammatical_candy::{
    CandyCron, CandyCronStr, CandyFrequency,
};
pub use crate::utils::convenience::functions::{
    create_default_delay_task_handler, create_delay_task_handler, unblock_process_task_fn,
};

pub use anyhow::{anyhow, Result as AnyResult};
pub use cron_clock::{self, error as cron_error, FixedOffset, Local, TimeZone, Utc};
pub use smol::channel;
pub use smol::future as future_lite;
pub use smol::spawn as async_spawn;
pub use smol::unblock as unblock_spawn;
pub use thiserror::Error;

/// State of the task run instance.
pub type InstanceState = usize;

pub(crate) use crate::entity::RuntimeKind;
pub(crate) use crate::timer::event_handle::SharedHeader;
pub(crate) use crate::timer::runtime_trace::state;
pub(crate) use crate::timer::runtime_trace::task_handle::DelayTaskHandlerBox;
pub(crate) use crate::timer::runtime_trace::task_handle::DelayTaskHandlerBoxBuilder;
pub(crate) use crate::timer::runtime_trace::task_instance::TaskInstancesChainMaintainer;

pub(crate) use crate::utils::parse::shell_command::{ChildGuard, ChildGuardList, ChildUnify};
pub(crate) use dashmap::DashMap;
#[allow(unused_imports)]
pub(crate) use log::{error, info};
pub(crate) use smol::channel::{Receiver as AsyncReceiver, Sender as AsyncSender};
pub(crate) use smol::future::yield_now;
pub(crate) use smol::lock::Mutex as AsyncMutex;

pub(crate) type TimerEventSender = AsyncSender<TimerEvent>;
pub(crate) type TimerEventReceiver = AsyncReceiver<TimerEvent>;

cfg_tokio_support!(
    pub use tokio::task::spawn as async_spawn_by_tokio;
    pub use tokio::task::spawn_blocking as unblock_spawn_by_tokio;
    pub use tokio::time::sleep as sleep_by_tokio;
    pub use crate::utils::convenience::functions::tokio_unblock_process_task_fn;
);

cfg_status_report!(
    pub use crate::utils::status_report::PublicEvent;
);