plugin_interfaces/
handler.rs

1use crate::callbacks::{HostCallbacks, set_host_callbacks};
2use crate::metadata::PluginMetadata;
3use crate::pluginui::{Context,Ui};
4
5/// 插件处理器 trait
6/// 定义了插件的生命周期方法
7pub trait PluginHandler: Send + Sync {
8    /// 插件初始化时调用(在挂载之前,用于设置回调函数)
9    fn initialize(&self, callbacks: HostCallbacks) -> Result<(), Box<dyn std::error::Error>> {
10        // 默认实现:设置全局回调函数
11        set_host_callbacks(callbacks).map_err(|_| "Failed to set host callbacks")?;
12        Ok(())
13    }
14
15    /// 更新UI(事件驱动)
16    /// 当前端用户交互或需要更新UI时调用
17    fn update_ui(&mut self, ctx: &Context, ui: &mut Ui);
18
19    /// 插件挂载时调用
20    fn on_mount(&mut self, metadata: &PluginMetadata) -> Result<(), Box<dyn std::error::Error>>;
21
22    /// 插件卸载时调用
23    fn on_dispose(&mut self) -> Result<(), Box<dyn std::error::Error>>;
24
25    /// 连接时调用
26    fn on_connect(&mut self) -> Result<(), Box<dyn std::error::Error>>;
27
28    /// 断开连接时调用
29    fn on_disconnect(&mut self) -> Result<(), Box<dyn std::error::Error>>;
30
31    /// 处理消息
32    fn handle_message(&self, message: &str) -> Result<String, Box<dyn std::error::Error>>;
33
34    /// 获取插件元数据
35    fn get_metadata(&self) -> PluginMetadata;
36}