Skip to main content

Module hooks

Module hooks 

Source
Expand description

钩子系统(Hook System)

本模块提供运行时钩子(Hook)管理功能,用于在 CAN 帧接收/发送时触发自定义回调。

§设计原则(v1.2.1)

  • 非阻塞: 所有回调必须在 <1μs 内完成,使用 Channel 异步处理
  • 职责分离: HookManager 管理运行时回调,PipelineConfig 保持为 POD 数据
  • 类型安全: 使用 dyn FrameCallback trait 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§

HookManager
钩子管理器

Traits§

FrameCallback
帧回调 Trait