增强插件系统:添加插件执行功能
- 在插件接口和基本插件实现中新增 Execute 方法,支持插件功能的动态执行。 - 更新各个插件(如日志插件、统计插件、存储插件等)以实现 Execute 方法,允许通过操作名称和参数执行特定功能。 - 在插件管理器中添加 ExecutePlugin、ExecutePluginsByType 和 ExecuteAllPlugins 方法,便于批量执行插件操作。 - 示例程序中更新插件调用方式,展示如何使用 Execute 方法进行操作。 此更新提升了插件系统的灵活性和可扩展性,便于开发者动态管理和执行插件功能。
This commit is contained in:
@@ -104,6 +104,62 @@ func (p *LoggerPlugin) Stop(ctx context.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Execute 执行插件功能
|
||||
func (p *LoggerPlugin) Execute(ctx context.Context, action string, params map[string]interface{}) (interface{}, error) {
|
||||
switch action {
|
||||
case "log":
|
||||
// 需要参数: level, message
|
||||
level, ok := params["level"].(string)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("缺少必需参数: level")
|
||||
}
|
||||
message, ok := params["message"].(string)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("缺少必需参数: message")
|
||||
}
|
||||
p.Log(level, message)
|
||||
return true, nil
|
||||
|
||||
case "info":
|
||||
// 需要参数: message
|
||||
message, ok := params["message"].(string)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("缺少必需参数: message")
|
||||
}
|
||||
p.Info(message)
|
||||
return true, nil
|
||||
|
||||
case "warn":
|
||||
// 需要参数: message
|
||||
message, ok := params["message"].(string)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("缺少必需参数: message")
|
||||
}
|
||||
p.Warn(message)
|
||||
return true, nil
|
||||
|
||||
case "error":
|
||||
// 需要参数: message
|
||||
message, ok := params["message"].(string)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("缺少必需参数: message")
|
||||
}
|
||||
p.Error(message)
|
||||
return true, nil
|
||||
|
||||
case "getLoggerStatus":
|
||||
// 不需要参数
|
||||
status := map[string]interface{}{
|
||||
"initialized": p.logger != nil,
|
||||
"config": p.config,
|
||||
}
|
||||
return status, nil
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("未知的操作: %s", action)
|
||||
}
|
||||
}
|
||||
|
||||
// Log 记录日志
|
||||
func (p *LoggerPlugin) Log(level, message string) {
|
||||
if p.logger == nil {
|
||||
|
Reference in New Issue
Block a user