Expand description
钩子系统(Hook System)
本模块提供运行时钩子(Hook)管理功能,用于在 CAN 帧接收/发送时触发自定义回调。
§设计原则(v1.2.1)
- 非阻塞: 所有回调必须在 <1μs 内完成,使用 Channel 异步处理
- 职责分离: HookManager 管理运行时回调,PipelineConfig 保持为 POD 数据
- 类型安全: 使用
dyn FrameCallbacktrait object,支持多种回调类型
§使用示例
use piper_driver::hooks::{HookManager, FrameCallback};
use piper_driver::recording::AsyncRecordingHook;
use piper_protocol::PiperFrame;
use std::sync::Arc;
// 创建钩子管理器
let mut hooks = HookManager::new();
// 添加录制回调
let (hook, _rx) = AsyncRecordingHook::new();
let callback = Arc::new(hook) as Arc<dyn FrameCallback>;
hooks.add_callback(callback);
// 触发所有回调(在 rx_loop 中)
let frame = PiperFrame::new_standard(0x251, &[1, 2, 3, 4]);
hooks.trigger_all(&frame);Structs§
- Hook
Manager - 钩子管理器
Traits§
- Frame
Callback - 帧回调 Trait