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}