Skip to main content

zerolaunch_plugin_api/services/installation_monitor/
monitor.rs

1use crate::host::error::HostApiError;
2use crate::services::installation_monitor::types::InstallationCallback;
3use async_trait::async_trait;
4
5/// 安装监控器 trait,定义平台无关的文件系统监控能力契约。
6/// 各平台实现此 trait,处理平台特定的文件监控逻辑。
7/// 支持多个回调注册,当监控目录发生变化时依次调用所有回调。
8#[async_trait]
9pub trait InstallationMonitor: Send + Sync {
10    /// 开始监控文件系统变化。
11    /// 启动后,当监控目录发生变化时,将依次调用所有已注册的回调。
12    /// 返回:成功返回 Ok(()),失败返回 HostApiError。
13    async fn start_watching(&self) -> Result<(), HostApiError>;
14
15    /// 停止监控文件系统变化。
16    /// 返回:成功返回 Ok(()),失败返回 HostApiError。
17    async fn stop_watching(&self) -> Result<(), HostApiError>;
18
19    /// 检查是否正在监控。
20    /// 返回:正在监控返回 true,否则返回 false。
21    fn is_watching(&self) -> bool;
22
23    /// 注册安装事件回调。
24    /// 参数:id - 回调标识(用于注销);callback - 回调函数。
25    fn register_callback(&self, id: &str, callback: InstallationCallback);
26
27    /// 注销安装事件回调。
28    /// 参数:id - 回调标识。
29    fn unregister_callback(&self, id: &str);
30
31    /// 更新监控路径列表。
32    /// 参数:paths - 要监控的目录路径列表(为空时平台实现应回退到默认路径)。
33    fn update_watch_paths(&self, paths: Vec<String>);
34
35    /// 更新事件去抖时间(秒)。
36    /// 参数:secs - 事件静默满该时长后才分发回调(合并去抖窗口内的事件)。
37    fn update_debounce_secs(&self, secs: f64);
38}