增强插件系统:添加插件类型支持

- 在插件接口和基本插件结构中引入插件类型(PluginType),并定义了多种预定义的插件类型。
- 更新插件管理器以支持按类型管理插件,新增按类型获取、初始化和启动插件的方法。
- 修改现有插件(如日志插件和统计插件)以实现插件类型接口,确保兼容性。
- 优化插件信息输出,包含插件类型信息。

此更新提升了插件系统的灵活性和可扩展性,便于未来添加更多插件类型。
This commit is contained in:
2025-03-14 11:07:53 +08:00
parent d423ed5029
commit 098c721ee9
8 changed files with 469 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
package main
import (
"context"
"fmt"
"log"
"os"
@@ -27,11 +28,12 @@ var Plugin = &LoggerPlugin{
"1.0.0",
"简单的日志记录插件",
"开发者",
plugin.PluginTypeUtils, // 设置插件类型为工具插件
),
}
// Init 初始化插件
func (p *LoggerPlugin) Init(config map[string]interface{}) error {
func (p *LoggerPlugin) Init(ctx context.Context, config map[string]interface{}) error {
p.config = config
// 获取日志文件路径
@@ -63,7 +65,7 @@ func (p *LoggerPlugin) Init(config map[string]interface{}) error {
}
// Start 启动插件
func (p *LoggerPlugin) Start() error {
func (p *LoggerPlugin) Start(ctx context.Context) error {
if p.logger == nil {
return fmt.Errorf("插件未初始化")
}
@@ -74,7 +76,7 @@ func (p *LoggerPlugin) Start() error {
}
// Stop 停止插件
func (p *LoggerPlugin) Stop() error {
func (p *LoggerPlugin) Stop(ctx context.Context) error {
if p.logger != nil {
p.logger.Println("日志插件正在停止")
}