增强插件系统:添加插件执行功能
- 在插件接口和基本插件实现中新增 Execute 方法,支持插件功能的动态执行。 - 更新各个插件(如日志插件、统计插件、存储插件等)以实现 Execute 方法,允许通过操作名称和参数执行特定功能。 - 在插件管理器中添加 ExecutePlugin、ExecutePluginsByType 和 ExecuteAllPlugins 方法,便于批量执行插件操作。 - 示例程序中更新插件调用方式,展示如何使用 Execute 方法进行操作。 此更新提升了插件系统的灵活性和可扩展性,便于开发者动态管理和执行插件功能。
This commit is contained in:
@@ -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所有插件已停止")
|
||||
|
Reference in New Issue
Block a user