Skip to main content

x_one/xhook/
mod.rs

1//! xhook - Hook 生命周期管理模块
2//!
3//! 提供 `before_start` 和 `before_stop` 两类 Hook,
4//! 支持排序执行、超时控制和 panic 恢复。
5
6pub mod manager;
7pub mod options;
8
9pub use manager::{
10    _before_start, _before_stop, invoke_before_start_hooks, invoke_before_stop_hooks, reset_hooks,
11};
12pub use options::HookOptions;
13
14/// 注册 BeforeStart Hook
15///
16/// 自动以函数名作为 Hook 名称,`HookOptions` 可选。
17///
18/// # Examples
19///
20/// ```ignore
21/// // 仅传函数,使用默认选项
22/// x_one::before_start!(|| Ok(()));
23///
24/// // 指定选项
25/// x_one::before_start!(|| Ok(()), HookOptions::new().order(10));
26/// ```
27#[macro_export]
28macro_rules! before_start {
29    ($f:expr) => {
30        $crate::xhook::_before_start(stringify!($f), $f, $crate::xhook::HookOptions::default())
31    };
32    ($f:expr, $opts:expr) => {
33        $crate::xhook::_before_start(stringify!($f), $f, $opts)
34    };
35}
36
37/// 注册 BeforeStop Hook
38///
39/// 自动以函数名作为 Hook 名称,`HookOptions` 可选。
40/// 清理阶段 `must_invoke_success` 被忽略,单个失败不影响后续 hook 执行。
41///
42/// # Examples
43///
44/// ```ignore
45/// // 仅传函数,使用默认选项
46/// x_one::before_stop!(|| Ok(()));
47///
48/// // 指定选项
49/// x_one::before_stop!(|| Ok(()), HookOptions::new().order(1));
50/// ```
51#[macro_export]
52macro_rules! before_stop {
53    ($f:expr) => {
54        $crate::xhook::_before_stop(stringify!($f), $f, $crate::xhook::HookOptions::default())
55    };
56    ($f:expr, $opts:expr) => {
57        $crate::xhook::_before_stop(stringify!($f), $f, $opts)
58    };
59}