Skip to main content

framework_timer/
registry.rs

1use crate::TimerTarget;
2
3/// 由 `#[timer]` 生成并收集的任务元数据。
4pub struct TimerRegistration {
5    /// 任务在日志中使用的唯一名称。
6    pub name: &'static str,
7    /// 同时运行的任务实例数。
8    pub count: usize,
9    /// 任务默认执行间隔,单位为毫秒。
10    pub interval: i64,
11    /// 此任务 panic 后是否立即重试。
12    pub retry_immediately_on_panic: Option<bool>,
13    /// 任务入口。
14    pub target: TimerTarget,
15}
16
17inventory::collect!(TimerRegistration);
18
19/// 向链接期全局注册表提交一个定时任务。
20pub use inventory::submit as push_timer;
21
22/// 获取当前链接到进程的全部定时任务。
23pub fn timer_iter() -> impl Iterator<Item = &'static TimerRegistration> {
24    inventory::iter::<TimerRegistration>.into_iter()
25}