增强插件系统:添加插件执行功能

- 在插件接口和基本插件实现中新增 Execute 方法,支持插件功能的动态执行。
- 更新各个插件(如日志插件、统计插件、存储插件等)以实现 Execute 方法,允许通过操作名称和参数执行特定功能。
- 在插件管理器中添加 ExecutePlugin、ExecutePluginsByType 和 ExecuteAllPlugins 方法,便于批量执行插件操作。
- 示例程序中更新插件调用方式,展示如何使用 Execute 方法进行操作。

此更新提升了插件系统的灵活性和可扩展性,便于开发者动态管理和执行插件功能。
This commit is contained in:
2025-03-14 11:31:32 +08:00
parent 0990e8c42c
commit 9f78cb483b
9 changed files with 559 additions and 7 deletions

View File

@@ -10,15 +10,36 @@ import (
)
func main() {
fmt.Println("==== 插件系统示例 ====")
fmt.Println("请选择要运行的示例:")
fmt.Println("1. 基本插件加载和管理")
fmt.Println("2. 动态参数传递示例")
fmt.Print("请输入选项 (1-2): ")
var choice int
fmt.Scan(&choice)
switch choice {
case 1:
BasicPluginExample()
case 2:
DynamicParamsExample()
default:
fmt.Println("无效的选项")
}
}
// BasicPluginExample 基本的插件加载和管理示例
func BasicPluginExample() {
// 创建上下文
ctx := context.Background()
// 获取插件目录
pluginsDir := filepath.Join("..", "plugins")
pluginsDir := filepath.Join("..", "plugins", "dist")
if _, err := os.Stat(pluginsDir); os.IsNotExist(err) {
if err := os.MkdirAll(pluginsDir, 0o755); err != nil {
fmt.Printf("创建插件目录失败: %v\n", err)
os.Exit(1)
return
}
}
@@ -39,19 +60,19 @@ func main() {
// 加载插件
if err := pm.LoadPlugins(); err != nil {
fmt.Printf("加载插件失败: %v\n", err)
os.Exit(1)
return
}
// 初始化所有插件
if err := pm.InitPlugins(ctx); err != nil {
fmt.Printf("初始化插件失败: %v\n", err)
os.Exit(1)
return
}
// 启动所有插件
if err := pm.StartPlugins(ctx); err != nil {
fmt.Printf("启动插件失败: %v\n", err)
os.Exit(1)
return
}
// 打印所有插件信息
@@ -125,7 +146,7 @@ func main() {
// 确保所有剩余插件都被停止
if err := pm.StopPlugins(ctx); err != nil {
fmt.Printf("停止剩余插件失败: %v\n", err)
os.Exit(1)
return
}
fmt.Println("\n所有插件已停止")