Documentation
¶
Index ¶
- Constants
- Variables
- func ConfigToJSON(config map[string]interface{}) (string, error)
- func ExamplePluginIsolation()
- func ExamplePluginManager()
- func ExamplePluginSandbox()
- func JSONToConfig(jsonStr string) (map[string]interface{}, error)
- func SavePluginMetadata(metadata PluginMetadata, path string) error
- type AppFrameworkPlugin
- type DefaultModule
- func (m *DefaultModule) Execute(action string, params map[string]interface{}) (map[string]interface{}, error)
- func (m *DefaultModule) GetInfo() ModuleInfo
- func (m *DefaultModule) HandleMessage(messageType string, messageID string, timestamp int64, ...) (map[string]interface{}, error)
- func (m *DefaultModule) Init(config map[string]interface{}) error
- func (m *DefaultModule) Shutdown() error
- type GRPCClient
- func (c *GRPCClient) Execute(action string, params map[string]interface{}) (map[string]interface{}, error)
- func (c *GRPCClient) GetInfo() ModuleInfo
- func (c *GRPCClient) HandleMessage(messageType string, messageID string, timestamp int64, ...) (map[string]interface{}, error)
- func (c *GRPCClient) Init(config map[string]interface{}) error
- func (c *GRPCClient) Shutdown() error
- type GRPCServer
- func (s *GRPCServer) Execute(ctx context.Context, req *pb.ActionRequest) (*pb.ActionResponse, error)
- func (s *GRPCServer) GetInfo(ctx context.Context, req *pb.EmptyRequest) (*pb.ModuleInfo, error)
- func (s *GRPCServer) HandleMessage(ctx context.Context, req *pb.MessageRequest) (*pb.MessageResponse, error)
- func (s *GRPCServer) Init(ctx context.Context, req *pb.InitRequest) (*pb.InitResponse, error)
- func (s *GRPCServer) Shutdown(ctx context.Context, req *pb.EmptyRequest) (*pb.EmptyRequest, error)
- type IsolationLevel
- type LoadedPlugin
- type ManagedPlugin
- type ManagerConfigV2
- type ManagerConfigV3
- type Message
- type MessageHandler
- type MessageType
- type Module
- type ModuleInfo
- type ModulePlugin
- type PluginCommunicationClient
- func (pcc *PluginCommunicationClient) GetSubscriptions() []string
- func (pcc *PluginCommunicationClient) PublishEvent(ctx context.Context, topic string, payload map[string]interface{}) error
- func (pcc *PluginCommunicationClient) SendMessage(ctx context.Context, msg Message) (Message, error)
- func (pcc *PluginCommunicationClient) Subscribe(topic string) error
- func (pcc *PluginCommunicationClient) Unsubscribe(topic string) error
- type PluginCommunicationInterface
- type PluginCommunicator
- func (pc *PluginCommunicator) Close() error
- func (pc *PluginCommunicator) GetSubscribers(topic string) []string
- func (pc *PluginCommunicator) GetSubscriptions(pluginID string) []string
- func (pc *PluginCommunicator) PublishEvent(ctx context.Context, source string, topic string, ...) error
- func (pc *PluginCommunicator) RegisterHandler(pluginID string, handler MessageHandler)
- func (pc *PluginCommunicator) SendMessage(ctx context.Context, msg Message) (Message, error)
- func (pc *PluginCommunicator) Subscribe(pluginID string, topic string)
- func (pc *PluginCommunicator) UnregisterHandler(pluginID string)
- func (pc *PluginCommunicator) Unsubscribe(pluginID string, topic string)
- func (pc *PluginCommunicator) UnsubscribeAll(pluginID string)
- type PluginConfig
- type PluginDependency
- type PluginDependencyManager
- func (pdm *PluginDependencyManager) AddPlugin(metadata PluginMetadata) error
- func (pdm *PluginDependencyManager) CheckDependencies(id string) (bool, []string, error)
- func (pdm *PluginDependencyManager) GetDependencies(id string) ([]string, error)
- func (pdm *PluginDependencyManager) GetDependents(id string) ([]string, error)
- func (pdm *PluginDependencyManager) GetLoadOrder() ([]string, error)
- func (pdm *PluginDependencyManager) GetPlugin(id string) (PluginMetadata, bool)
- func (pdm *PluginDependencyManager) GetPluginGraph() map[string][]string
- func (pdm *PluginDependencyManager) GetPluginReverseGraph() map[string][]string
- func (pdm *PluginDependencyManager) GetPlugins() map[string]PluginMetadata
- func (pdm *PluginDependencyManager) GetPluginsByTag(tag string) []PluginMetadata
- func (pdm *PluginDependencyManager) GetUnloadOrder() ([]string, error)
- func (pdm *PluginDependencyManager) RemovePlugin(id string) error
- type PluginExecutor
- func (pe *PluginExecutor) ExecuteFunc(f func(interface{}) error) error
- func (pe *PluginExecutor) GetInstance() interface{}
- func (pe *PluginExecutor) GetLastError() error
- func (pe *PluginExecutor) GetUptime() time.Duration
- func (pe *PluginExecutor) IsRunning() bool
- func (pe *PluginExecutor) Start() error
- func (pe *PluginExecutor) Stop() error
- type PluginExecutorOption
- func WithExecutorContext(ctx context.Context) PluginExecutorOption
- func WithExecutorErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginExecutorOption
- func WithExecutorLogger(logger hclog.Logger) PluginExecutorOption
- func WithExecutorRecoveryManager(manager *errors.RecoveryManager) PluginExecutorOption
- func WithExecutorResourceTracker(tracker *resource.ResourceTracker) PluginExecutorOption
- func WithExecutorWorkerPool(pool *concurrency.WorkerPool) PluginExecutorOption
- type PluginIsolationConfig
- type PluginIsolationStats
- type PluginIsolator
- type PluginIsolatorOption
- func WithContext(ctx context.Context) PluginIsolatorOption
- func WithErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginIsolatorOption
- func WithLogger(logger hclog.Logger) PluginIsolatorOption
- func WithRecoveryManager(manager *errors.RecoveryManager) PluginIsolatorOption
- func WithResourceTracker(tracker *resource.ResourceTracker) PluginIsolatorOption
- func WithWorkerPool(pool *concurrency.WorkerPool) PluginIsolatorOption
- type PluginLoader
- func (pl *PluginLoader) Close() error
- func (pl *PluginLoader) GetLoadedPlugin(id string) (*LoadedPlugin, bool)
- func (pl *PluginLoader) GetLoadedPlugins() map[string]*LoadedPlugin
- func (pl *PluginLoader) LoadPlugin(metadata PluginMetadata) (*LoadedPlugin, error)
- func (pl *PluginLoader) ScanPluginsDir() ([]PluginMetadata, error)
- func (pl *PluginLoader) UnloadPlugin(id string) error
- type PluginManager
- func (pm *PluginManager) ExecutePluginFunc(id string, f func() error) error
- func (pm *PluginManager) ExecutePluginFuncWithContext(id string, ctx context.Context, f func(context.Context) error) error
- func (pm *PluginManager) GetPlugin(id string) (*ManagedPlugin, bool)
- func (pm *PluginManager) ListPlugins() []*ManagedPlugin
- func (pm *PluginManager) LoadPlugin(config *PluginConfig) (*ManagedPlugin, error)
- func (pm *PluginManager) RestartPlugin(id string) error
- func (pm *PluginManager) StartHealthCheck()
- func (pm *PluginManager) StartPlugin(id string) error
- func (pm *PluginManager) Stop()
- func (pm *PluginManager) StopPlugin(id string) error
- func (pm *PluginManager) UnloadPlugin(id string) error
- type PluginManagerOption
- func WithHealthCheckInterval(interval time.Duration) PluginManagerOption
- func WithIdleTimeout(timeout time.Duration) PluginManagerOption
- func WithPluginManagerContext(ctx context.Context) PluginManagerOption
- func WithPluginManagerErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginManagerOption
- func WithPluginManagerLogger(logger hclog.Logger) PluginManagerOption
- func WithPluginManagerRecoveryManager(manager *errors.RecoveryManager) PluginManagerOption
- func WithPluginManagerResourceTracker(tracker *resource.ResourceTracker) PluginManagerOption
- func WithPluginManagerWorkerPool(pool *concurrency.WorkerPool) PluginManagerOption
- func WithPluginsDir(dir string) PluginManagerOption
- type PluginManagerV2
- func (m *PluginManagerV2) GetPlugin(id string) (api.Plugin, bool)
- func (m *PluginManagerV2) GetPluginStatus(id string) (api.PluginStatus, error)
- func (m *PluginManagerV2) ListPlugins() []api.PluginInfo
- func (m *PluginManagerV2) LoadPlugin(id string) (api.Plugin, error)
- func (m *PluginManagerV2) Start() error
- func (m *PluginManagerV2) StartPlugin(id string) error
- func (m *PluginManagerV2) Stop() error
- func (m *PluginManagerV2) StopPlugin(id string) error
- func (m *PluginManagerV2) UnloadPlugin(id string) error
- type PluginManagerV3
- func (m *PluginManagerV3) CreateCommunication(protocol sdk.CommunicationProtocol, options map[string]interface{}) (sdk.Communication, error)
- func (m *PluginManagerV3) ExecuteInSandbox(id string, f func() error) error
- func (m *PluginManagerV3) GeneratePluginDiagram(outputPath string) error
- func (m *PluginManagerV3) GeneratePluginDocs(outputDir string) error
- func (m *PluginManagerV3) GetCommunicationFactory() *communication.DefaultCommunicationFactory
- func (m *PluginManagerV3) GetDependencyInjector() *dependency.DependencyInjector
- func (m *PluginManagerV3) GetDependencyManager() *dependency.DependencyManager
- func (m *PluginManagerV3) GetDependencyOrder() ([]string, error)
- func (m *PluginManagerV3) GetDependencyResolver() *dependency.DependencyResolver
- func (m *PluginManagerV3) GetIsolator() isolation.PluginIsolator
- func (m *PluginManagerV3) GetLogger() hclog.Logger
- func (m *PluginManagerV3) GetPlugin(id string) (api.Plugin, bool)
- func (m *PluginManagerV3) GetPluginDependencies(id string) ([]api.PluginDependency, error)
- func (m *PluginManagerV3) GetPluginDependents(id string) []string
- func (m *PluginManagerV3) GetPluginDocGenerator() *docs.DocGenerator
- func (m *PluginManagerV3) GetPluginStatus(id string) (api.PluginStatus, error)
- func (m *PluginManagerV3) GetRegistry() registry.PluginRegistry
- func (m *PluginManagerV3) InjectPlugin(id string, plugin api.Plugin)
- func (m *PluginManagerV3) ListPlugins() []api.PluginInfo
- func (m *PluginManagerV3) LoadPlugin(id string) (api.Plugin, error)
- func (m *PluginManagerV3) RegisterCommunicationHandler(protocol sdk.CommunicationProtocol, handler sdk.CommunicationHandler)
- func (m *PluginManagerV3) Start() error
- func (m *PluginManagerV3) StartPlugin(id string) error
- func (m *PluginManagerV3) Stop() error
- func (m *PluginManagerV3) StopPlugin(id string) error
- func (m *PluginManagerV3) UnloadPlugin(id string) error
- type PluginMetadata
- type PluginSandbox
- func (ps *PluginSandbox) Execute(f func() error) error
- func (ps *PluginSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error
- func (ps *PluginSandbox) GetID() string
- func (ps *PluginSandbox) GetLastActivityTime() time.Time
- func (ps *PluginSandbox) GetState() PluginState
- func (ps *PluginSandbox) GetStats() map[string]interface{}
- func (ps *PluginSandbox) GetUptime() time.Duration
- func (ps *PluginSandbox) IsHealthy() bool
- func (ps *PluginSandbox) IsIdle(duration time.Duration) bool
- func (ps *PluginSandbox) Pause()
- func (ps *PluginSandbox) Reset()
- func (ps *PluginSandbox) Resume()
- func (ps *PluginSandbox) SetState(state PluginState)
- func (ps *PluginSandbox) Stop()
- type PluginSandboxOption
- type PluginState
Constants ¶
const ( PluginIsolationLevelNone = "none" // 无隔离 PluginIsolationLevelBasic = "basic" // 基本隔离 PluginIsolationLevelStrict = "strict" // 严格隔离 )
插件隔离级别
const ( PluginStatusUnloaded = "unloaded" // 未加载 PluginStatusLoaded = "loaded" // 已加载 PluginStatusRunning = "running" // 运行中 PluginStatusStopped = "stopped" // 已停止 PluginStatusError = "error" // 错误 )
插件状态
const ( PluginTypeCore = "core" // 核心插件 PluginTypeService = "service" // 服务插件 PluginTypeUI = "ui" // UI插件 PluginTypeUtil = "util" // 工具插件 )
插件类型
const ( PluginEventLoaded = "loaded" // 已加载 PluginEventUnloaded = "unloaded" // 已卸载 PluginEventStarted = "started" // 已启动 PluginEventStopped = "stopped" // 已停止 PluginEventError = "error" // 错误 )
插件事件
const ( PluginPermissionNone = "none" // 无权限 PluginPermissionReadOnly = "readonly" // 只读权限 PluginPermissionReadWrite = "readwrite" // 读写权限 PluginPermissionAdmin = "admin" // 管理员权限 )
插件权限
Variables ¶
var PluginMap = map[string]plugin.Plugin{ "module": &ModulePlugin{}, "assets": &ModulePlugin{}, "audit": &ModulePlugin{}, "control": &ModulePlugin{}, "device": &ModulePlugin{}, "dlp": &ModulePlugin{}, }
PluginMap 是插件类型到插件实现的映射
Functions ¶
func ConfigToJSON ¶
ConfigToJSON 将配置转换为JSON字符串
func JSONToConfig ¶
JSONToConfig 将JSON字符串转换为配置
func SavePluginMetadata ¶
func SavePluginMetadata(metadata PluginMetadata, path string) error
SavePluginMetadata 保存插件元数据
Types ¶
type AppFrameworkPlugin ¶
type AppFrameworkPlugin struct {
hashiPlugin.Plugin
Impl Module
}
AppFrameworkPlugin Hashicorp插件实现
func (*AppFrameworkPlugin) GRPCClient ¶
func (p *AppFrameworkPlugin) GRPCClient(ctx context.Context, broker *hashiPlugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)
GRPCClient 实现GRPCPlugin接口
func (*AppFrameworkPlugin) GRPCServer ¶
func (p *AppFrameworkPlugin) GRPCServer(broker *hashiPlugin.GRPCBroker, s *grpc.Server) error
GRPCServer 实现GRPCPlugin接口
type DefaultModule ¶
type DefaultModule struct {
// 模块名称
Name string
// 模块版本
Version string
// 模块描述
Description string
// 支持的操作列表
SupportedActions []string
// 配置
Config map[string]interface{}
}
DefaultModule 提供了Module接口的默认实现
func NewDefaultModule ¶
func NewDefaultModule(name, version, description string, supportedActions []string) *DefaultModule
NewDefaultModule 创建一个新的默认模块
func (*DefaultModule) Execute ¶
func (m *DefaultModule) Execute(action string, params map[string]interface{}) (map[string]interface{}, error)
Execute 执行模块操作
func (*DefaultModule) HandleMessage ¶
func (m *DefaultModule) HandleMessage(messageType string, messageID string, timestamp int64, payload map[string]interface{}) (map[string]interface{}, error)
HandleMessage 处理消息
func (*DefaultModule) Init ¶
func (m *DefaultModule) Init(config map[string]interface{}) error
Init 初始化模块
type GRPCClient ¶
type GRPCClient struct {
// contains filtered or unexported fields
}
GRPCClient 是一个gRPC客户端适配器,用于将gRPC客户端转换为Module接口
func (*GRPCClient) Execute ¶
func (c *GRPCClient) Execute(action string, params map[string]interface{}) (map[string]interface{}, error)
Execute 实现了Module接口的Execute方法
func (*GRPCClient) GetInfo ¶
func (c *GRPCClient) GetInfo() ModuleInfo
GetInfo 实现了Module接口的GetInfo方法
func (*GRPCClient) HandleMessage ¶
func (c *GRPCClient) HandleMessage(messageType string, messageID string, timestamp int64, payload map[string]interface{}) (map[string]interface{}, error)
HandleMessage 实现了Module接口的HandleMessage方法
func (*GRPCClient) Init ¶
func (c *GRPCClient) Init(config map[string]interface{}) error
Init 实现了Module接口的Init方法
type GRPCServer ¶
type GRPCServer struct {
pb.UnimplementedModuleServer
Impl Module
}
GRPCServer 是一个gRPC服务器适配器,用于将Module接口转换为gRPC服务
func (*GRPCServer) Execute ¶
func (s *GRPCServer) Execute(ctx context.Context, req *pb.ActionRequest) (*pb.ActionResponse, error)
Execute 实现了gRPC服务的Execute方法
func (*GRPCServer) GetInfo ¶
func (s *GRPCServer) GetInfo(ctx context.Context, req *pb.EmptyRequest) (*pb.ModuleInfo, error)
GetInfo 实现了gRPC服务的GetInfo方法
func (*GRPCServer) HandleMessage ¶
func (s *GRPCServer) HandleMessage(ctx context.Context, req *pb.MessageRequest) (*pb.MessageResponse, error)
HandleMessage 实现了gRPC服务的HandleMessage方法
func (*GRPCServer) Init ¶
func (s *GRPCServer) Init(ctx context.Context, req *pb.InitRequest) (*pb.InitResponse, error)
Init 实现了gRPC服务的Init方法
func (*GRPCServer) Shutdown ¶
func (s *GRPCServer) Shutdown(ctx context.Context, req *pb.EmptyRequest) (*pb.EmptyRequest, error)
Shutdown 实现了gRPC服务的Shutdown方法,支持优雅终止
type IsolationLevel ¶
type IsolationLevel int
IsolationLevel 表示插件隔离级别
const ( IsolationLevelNone IsolationLevel = iota // 无隔离 IsolationLevelBasic // 基本隔离(独立goroutine和错误处理) IsolationLevelStrict // 严格隔离(独立goroutine、错误处理和资源限制) IsolationLevelComplete // 完全隔离(独立进程) )
预定义隔离级别
type LoadedPlugin ¶
type LoadedPlugin struct {
Metadata PluginMetadata
Instance interface{}
Client *hashiPlugin.Client
RawPlugin *plugin.Plugin
}
LoadedPlugin 已加载的插件
type ManagedPlugin ¶
type ManagedPlugin struct {
ID string
Name string
Version string
Path string
Client *plugin.Client
Interface interface{}
Sandbox *PluginSandbox
Config *PluginConfig
State PluginState
LastError error
StartTime time.Time
StopTime time.Time
}
ManagedPlugin 受管理的插件
type ManagerConfigV2 ¶ added in v0.0.4
type ManagerConfigV2 struct {
// 插件目录
PluginsDir string
// 自动发现
AutoDiscover bool
// 扫描间隔
ScanInterval time.Duration
// 健康检查间隔
HealthCheckInterval time.Duration
// 自动启动
AutoStart bool
}
ManagerConfigV2 新版管理器配置
func DefaultManagerConfigV2 ¶ added in v0.0.4
func DefaultManagerConfigV2() ManagerConfigV2
DefaultManagerConfigV2 返回默认管理器配置
type ManagerConfigV3 ¶ added in v0.0.4
type ManagerConfigV3 struct {
// 插件目录
PluginsDir string
// 自动发现
AutoDiscover bool
// 扫描间隔
ScanInterval time.Duration
// 健康检查间隔
HealthCheckInterval time.Duration
// 自动启动
AutoStart bool
// 隔离级别
IsolationLevel isolation.IsolationLevel
// 资源限制
ResourceLimits map[string]int64
// 操作超时
OperationTimeout time.Duration
}
ManagerConfigV3 新版管理器配置
func DefaultManagerConfigV3 ¶ added in v0.0.4
func DefaultManagerConfigV3() ManagerConfigV3
DefaultManagerConfigV3 返回默认管理器配置
type Message ¶
type Message struct {
ID string // 消息ID
Type MessageType // 消息类型
Source string // 消息源
Destination string // 消息目标
Topic string // 消息主题
Payload map[string]interface{} // 消息负载
Timestamp time.Time // 时间戳
}
Message 消息
type MessageHandler ¶
MessageHandler 消息处理器
type MessageType ¶
type MessageType string
MessageType 消息类型
const ( MessageTypeRequest MessageType = "request" // 请求 MessageTypeResponse MessageType = "response" // 响应 MessageTypeEvent MessageType = "event" // 事件 MessageTypeError MessageType = "error" // 错误 )
预定义消息类型
type Module ¶
type Module interface {
// Init 初始化模块
Init(config map[string]interface{}) error
// Execute 执行模块操作
Execute(action string, params map[string]interface{}) (map[string]interface{}, error)
// Shutdown 关闭模块
Shutdown() error
// GetInfo 获取模块信息
GetInfo() ModuleInfo
// HandleMessage 处理消息
HandleMessage(messageType string, messageID string, timestamp int64, payload map[string]interface{}) (map[string]interface{}, error)
}
Module 定义了插件模块的接口
type ModuleInfo ¶
type ModuleInfo struct {
Name string `json:"name"`
Version string `json:"version"`
Description string `json:"description"`
SupportedActions []string `json:"supported_actions"`
}
ModuleInfo 包含模块的基本信息
type ModulePlugin ¶
ModulePlugin 是一个go-plugin的实现
func (*ModulePlugin) GRPCClient ¶
func (p *ModulePlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)
GRPCClient 实现了go-plugin的GRPCClient接口
func (*ModulePlugin) GRPCServer ¶
func (p *ModulePlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error
GRPCServer 实现了go-plugin的GRPCServer接口
type PluginCommunicationClient ¶
type PluginCommunicationClient struct {
// contains filtered or unexported fields
}
PluginCommunicationClient 插件通信客户端
func NewPluginCommunicationClient ¶
func NewPluginCommunicationClient(pluginID string, communicator *PluginCommunicator, logger hclog.Logger) *PluginCommunicationClient
NewPluginCommunicationClient 创建插件通信客户端
func (*PluginCommunicationClient) GetSubscriptions ¶
func (pcc *PluginCommunicationClient) GetSubscriptions() []string
GetSubscriptions 获取订阅
func (*PluginCommunicationClient) PublishEvent ¶
func (pcc *PluginCommunicationClient) PublishEvent(ctx context.Context, topic string, payload map[string]interface{}) error
PublishEvent 发布事件
func (*PluginCommunicationClient) SendMessage ¶
func (pcc *PluginCommunicationClient) SendMessage(ctx context.Context, msg Message) (Message, error)
SendMessage 发送消息
func (*PluginCommunicationClient) Subscribe ¶
func (pcc *PluginCommunicationClient) Subscribe(topic string) error
Subscribe 订阅主题
func (*PluginCommunicationClient) Unsubscribe ¶
func (pcc *PluginCommunicationClient) Unsubscribe(topic string) error
Unsubscribe 取消订阅主题
type PluginCommunicationInterface ¶
type PluginCommunicationInterface interface {
// SendMessage 发送消息
SendMessage(ctx context.Context, msg Message) (Message, error)
// PublishEvent 发布事件
PublishEvent(ctx context.Context, topic string, payload map[string]interface{}) error
// Subscribe 订阅主题
Subscribe(topic string) error
// Unsubscribe 取消订阅主题
Unsubscribe(topic string) error
// GetSubscriptions 获取订阅
GetSubscriptions() []string
}
PluginCommunicationInterface 插件通信接口
type PluginCommunicator ¶
type PluginCommunicator struct {
// contains filtered or unexported fields
}
PluginCommunicator 插件通信器
func NewPluginCommunicator ¶
func NewPluginCommunicator(logger hclog.Logger, pluginManager *PluginManager) *PluginCommunicator
NewPluginCommunicator 创建插件通信器
func (*PluginCommunicator) GetSubscribers ¶
func (pc *PluginCommunicator) GetSubscribers(topic string) []string
GetSubscribers 获取订阅者
func (*PluginCommunicator) GetSubscriptions ¶
func (pc *PluginCommunicator) GetSubscriptions(pluginID string) []string
GetSubscriptions 获取订阅
func (*PluginCommunicator) PublishEvent ¶
func (pc *PluginCommunicator) PublishEvent(ctx context.Context, source string, topic string, payload map[string]interface{}) error
PublishEvent 发布事件
func (*PluginCommunicator) RegisterHandler ¶
func (pc *PluginCommunicator) RegisterHandler(pluginID string, handler MessageHandler)
RegisterHandler 注册消息处理器
func (*PluginCommunicator) SendMessage ¶
SendMessage 发送消息
func (*PluginCommunicator) Subscribe ¶
func (pc *PluginCommunicator) Subscribe(pluginID string, topic string)
Subscribe 订阅主题
func (*PluginCommunicator) UnregisterHandler ¶
func (pc *PluginCommunicator) UnregisterHandler(pluginID string)
UnregisterHandler 注销消息处理器
func (*PluginCommunicator) Unsubscribe ¶
func (pc *PluginCommunicator) Unsubscribe(pluginID string, topic string)
Unsubscribe 取消订阅主题
func (*PluginCommunicator) UnsubscribeAll ¶
func (pc *PluginCommunicator) UnsubscribeAll(pluginID string)
UnsubscribeAll 取消所有订阅
type PluginConfig ¶
type PluginConfig struct {
ID string
Name string
Version string
Path string
IsolationLevel IsolationLevel
AutoStart bool
AutoRestart bool
Enabled bool
Dependencies []string
ResourceLimits map[string]int
Environment map[string]string
Args []string
Timeout time.Duration
}
PluginConfig 插件配置
type PluginDependency ¶
type PluginDependency struct {
ID string // 依赖的插件ID
Version string // 依赖的插件版本
Optional bool // 是否可选
}
PluginDependency 插件依赖
type PluginDependencyManager ¶
type PluginDependencyManager struct {
// contains filtered or unexported fields
}
PluginDependencyManager 插件依赖管理器
func NewPluginDependencyManager ¶
func NewPluginDependencyManager(logger hclog.Logger) *PluginDependencyManager
NewPluginDependencyManager 创建插件依赖管理器
func (*PluginDependencyManager) AddPlugin ¶
func (pdm *PluginDependencyManager) AddPlugin(metadata PluginMetadata) error
AddPlugin 添加插件
func (*PluginDependencyManager) CheckDependencies ¶
func (pdm *PluginDependencyManager) CheckDependencies(id string) (bool, []string, error)
CheckDependencies 检查插件依赖
func (*PluginDependencyManager) GetDependencies ¶
func (pdm *PluginDependencyManager) GetDependencies(id string) ([]string, error)
GetDependencies 获取插件的依赖
func (*PluginDependencyManager) GetDependents ¶
func (pdm *PluginDependencyManager) GetDependents(id string) ([]string, error)
GetDependents 获取依赖此插件的插件
func (*PluginDependencyManager) GetLoadOrder ¶
func (pdm *PluginDependencyManager) GetLoadOrder() ([]string, error)
GetLoadOrder 获取插件加载顺序
func (*PluginDependencyManager) GetPlugin ¶
func (pdm *PluginDependencyManager) GetPlugin(id string) (PluginMetadata, bool)
GetPlugin 获取插件
func (*PluginDependencyManager) GetPluginGraph ¶
func (pdm *PluginDependencyManager) GetPluginGraph() map[string][]string
GetPluginGraph 获取插件依赖图
func (*PluginDependencyManager) GetPluginReverseGraph ¶
func (pdm *PluginDependencyManager) GetPluginReverseGraph() map[string][]string
GetPluginReverseGraph 获取插件反向依赖图
func (*PluginDependencyManager) GetPlugins ¶
func (pdm *PluginDependencyManager) GetPlugins() map[string]PluginMetadata
GetPlugins 获取所有插件
func (*PluginDependencyManager) GetPluginsByTag ¶
func (pdm *PluginDependencyManager) GetPluginsByTag(tag string) []PluginMetadata
GetPluginsByTag 获取指定标签的插件
func (*PluginDependencyManager) GetUnloadOrder ¶
func (pdm *PluginDependencyManager) GetUnloadOrder() ([]string, error)
GetUnloadOrder 获取插件卸载顺序
func (*PluginDependencyManager) RemovePlugin ¶
func (pdm *PluginDependencyManager) RemovePlugin(id string) error
RemovePlugin 移除插件
type PluginExecutor ¶ added in v0.0.3
type PluginExecutor struct {
// contains filtered or unexported fields
}
PluginExecutor 插件执行器
func NewPluginExecutor ¶ added in v0.0.3
func NewPluginExecutor(pluginID string, pluginPath string, options ...PluginExecutorOption) *PluginExecutor
NewPluginExecutor 创建一个新的插件执行器
func (*PluginExecutor) ExecuteFunc ¶ added in v0.0.3
func (pe *PluginExecutor) ExecuteFunc(f func(interface{}) error) error
ExecuteFunc 在插件中执行函数
func (*PluginExecutor) GetInstance ¶ added in v0.0.3
func (pe *PluginExecutor) GetInstance() interface{}
GetInstance 获取插件实例
func (*PluginExecutor) GetLastError ¶ added in v0.0.3
func (pe *PluginExecutor) GetLastError() error
GetLastError 获取最后一个错误
func (*PluginExecutor) GetUptime ¶ added in v0.0.3
func (pe *PluginExecutor) GetUptime() time.Duration
GetUptime 获取插件运行时间
func (*PluginExecutor) IsRunning ¶ added in v0.0.3
func (pe *PluginExecutor) IsRunning() bool
IsRunning 检查插件是否正在运行
type PluginExecutorOption ¶ added in v0.0.3
type PluginExecutorOption func(*PluginExecutor)
PluginExecutorOption 插件执行器配置选项
func WithExecutorContext ¶ added in v0.0.3
func WithExecutorContext(ctx context.Context) PluginExecutorOption
WithExecutorContext 设置上下文
func WithExecutorErrorRegistry ¶ added in v0.0.3
func WithExecutorErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginExecutorOption
WithExecutorErrorRegistry 设置错误处理器注册表
func WithExecutorLogger ¶ added in v0.0.3
func WithExecutorLogger(logger hclog.Logger) PluginExecutorOption
WithExecutorLogger 设置日志记录器
func WithExecutorRecoveryManager ¶ added in v0.0.3
func WithExecutorRecoveryManager(manager *errors.RecoveryManager) PluginExecutorOption
WithExecutorRecoveryManager 设置恢复管理器
func WithExecutorResourceTracker ¶ added in v0.0.3
func WithExecutorResourceTracker(tracker *resource.ResourceTracker) PluginExecutorOption
WithExecutorResourceTracker 设置资源追踪器
func WithExecutorWorkerPool ¶ added in v0.0.3
func WithExecutorWorkerPool(pool *concurrency.WorkerPool) PluginExecutorOption
WithExecutorWorkerPool 设置工作池
type PluginIsolationConfig ¶
type PluginIsolationConfig struct {
Level IsolationLevel // 隔离级别
ResourceLimits map[string]int // 资源限制
TimeoutDuration time.Duration // 超时时间
MemoryLimit int64 // 内存限制(字节)
CPULimit int // CPU限制(百分比)
IOLimit int // IO限制(操作/秒)
NetworkLimit int // 网络限制(字节/秒)
AllowedAPIs map[string]bool // 允许的API
BlockedAPIs map[string]bool // 阻止的API
Environment map[string]string // 环境变量
WorkingDir string // 工作目录
LogLevel string // 日志级别
ErrorHandler errors.ErrorHandler // 错误处理器
RecoveryHandler errors.RecoveryHandler // 恢复处理器
}
PluginIsolationConfig 插件隔离配置
func DefaultPluginIsolationConfig ¶
func DefaultPluginIsolationConfig() *PluginIsolationConfig
DefaultPluginIsolationConfig 返回默认的插件隔离配置
type PluginIsolationStats ¶
type PluginIsolationStats struct {
TotalCalls int64
SuccessfulCalls int64
FailedCalls int64
Timeouts int64
ResourceViolations int64
Panics int64
TotalExecutionTime time.Duration
AvgExecutionTime time.Duration
MaxExecutionTime time.Duration
MinExecutionTime time.Duration
}
PluginIsolationStats 插件隔离统计信息
type PluginIsolator ¶
type PluginIsolator struct {
// contains filtered or unexported fields
}
PluginIsolator 插件隔离器
func NewPluginIsolator ¶
func NewPluginIsolator(config *PluginIsolationConfig, options ...PluginIsolatorOption) *PluginIsolator
NewPluginIsolator 创建一个新的插件隔离器
func (*PluginIsolator) ExecuteFunc ¶
func (pi *PluginIsolator) ExecuteFunc(pluginID string, f func() error) error
ExecuteFunc 在隔离环境中执行函数
func (*PluginIsolator) GetStats ¶
func (pi *PluginIsolator) GetStats() PluginIsolationStats
GetStats 获取统计信息
type PluginIsolatorOption ¶
type PluginIsolatorOption func(*PluginIsolator)
PluginIsolatorOption 插件隔离器配置选项
func WithErrorRegistry ¶
func WithErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginIsolatorOption
WithErrorRegistry 设置错误处理器注册表
func WithRecoveryManager ¶
func WithRecoveryManager(manager *errors.RecoveryManager) PluginIsolatorOption
WithRecoveryManager 设置恢复管理器
func WithResourceTracker ¶
func WithResourceTracker(tracker *resource.ResourceTracker) PluginIsolatorOption
WithResourceTracker 设置资源追踪器
func WithWorkerPool ¶
func WithWorkerPool(pool *concurrency.WorkerPool) PluginIsolatorOption
WithWorkerPool 设置工作池
type PluginLoader ¶
type PluginLoader struct {
// contains filtered or unexported fields
}
PluginLoader 插件加载器
func NewPluginLoader ¶
func NewPluginLoader(pluginsDir string, logger hclog.Logger) *PluginLoader
NewPluginLoader 创建插件加载器
func (*PluginLoader) GetLoadedPlugin ¶
func (pl *PluginLoader) GetLoadedPlugin(id string) (*LoadedPlugin, bool)
GetLoadedPlugin 获取已加载的插件
func (*PluginLoader) GetLoadedPlugins ¶
func (pl *PluginLoader) GetLoadedPlugins() map[string]*LoadedPlugin
GetLoadedPlugins 获取所有已加载的插件
func (*PluginLoader) LoadPlugin ¶
func (pl *PluginLoader) LoadPlugin(metadata PluginMetadata) (*LoadedPlugin, error)
LoadPlugin 加载插件
func (*PluginLoader) ScanPluginsDir ¶
func (pl *PluginLoader) ScanPluginsDir() ([]PluginMetadata, error)
ScanPluginsDir 扫描插件目录
func (*PluginLoader) UnloadPlugin ¶
func (pl *PluginLoader) UnloadPlugin(id string) error
UnloadPlugin 卸载插件
type PluginManager ¶
type PluginManager struct {
// contains filtered or unexported fields
}
PluginManager 插件管理器
func NewPluginManager ¶
func NewPluginManager(options ...PluginManagerOption) *PluginManager
NewPluginManager 创建一个新的插件管理器
func (*PluginManager) ExecutePluginFunc ¶
func (pm *PluginManager) ExecutePluginFunc(id string, f func() error) error
ExecutePluginFunc 在插件沙箱中执行函数
func (*PluginManager) ExecutePluginFuncWithContext ¶
func (pm *PluginManager) ExecutePluginFuncWithContext(id string, ctx context.Context, f func(context.Context) error) error
ExecutePluginFuncWithContext 在插件沙箱中执行带上下文的函数
func (*PluginManager) GetPlugin ¶
func (pm *PluginManager) GetPlugin(id string) (*ManagedPlugin, bool)
GetPlugin 获取插件
func (*PluginManager) ListPlugins ¶
func (pm *PluginManager) ListPlugins() []*ManagedPlugin
ListPlugins 列出所有插件
func (*PluginManager) LoadPlugin ¶
func (pm *PluginManager) LoadPlugin(config *PluginConfig) (*ManagedPlugin, error)
LoadPlugin 加载插件
func (*PluginManager) RestartPlugin ¶
func (pm *PluginManager) RestartPlugin(id string) error
RestartPlugin 重启插件
func (*PluginManager) StartHealthCheck ¶
func (pm *PluginManager) StartHealthCheck()
StartHealthCheck 启动健康检查
func (*PluginManager) StartPlugin ¶
func (pm *PluginManager) StartPlugin(id string) error
StartPlugin 启动插件
func (*PluginManager) StopPlugin ¶
func (pm *PluginManager) StopPlugin(id string) error
StopPlugin 停止插件
func (*PluginManager) UnloadPlugin ¶
func (pm *PluginManager) UnloadPlugin(id string) error
UnloadPlugin 卸载插件
type PluginManagerOption ¶
type PluginManagerOption func(*PluginManager)
PluginManagerOption 插件管理器配置选项
func WithHealthCheckInterval ¶
func WithHealthCheckInterval(interval time.Duration) PluginManagerOption
WithHealthCheckInterval 设置健康检查间隔
func WithIdleTimeout ¶
func WithIdleTimeout(timeout time.Duration) PluginManagerOption
WithIdleTimeout 设置空闲超时
func WithPluginManagerContext ¶
func WithPluginManagerContext(ctx context.Context) PluginManagerOption
WithPluginManagerContext 设置上下文
func WithPluginManagerErrorRegistry ¶
func WithPluginManagerErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginManagerOption
WithPluginManagerErrorRegistry 设置错误处理器注册表
func WithPluginManagerLogger ¶
func WithPluginManagerLogger(logger hclog.Logger) PluginManagerOption
WithPluginManagerLogger 设置日志记录器
func WithPluginManagerRecoveryManager ¶
func WithPluginManagerRecoveryManager(manager *errors.RecoveryManager) PluginManagerOption
WithPluginManagerRecoveryManager 设置恢复管理器
func WithPluginManagerResourceTracker ¶
func WithPluginManagerResourceTracker(tracker *resource.ResourceTracker) PluginManagerOption
WithPluginManagerResourceTracker 设置资源追踪器
func WithPluginManagerWorkerPool ¶
func WithPluginManagerWorkerPool(pool *concurrency.WorkerPool) PluginManagerOption
WithPluginManagerWorkerPool 设置工作池
type PluginManagerV2 ¶ added in v0.0.4
type PluginManagerV2 struct {
// contains filtered or unexported fields
}
PluginManagerV2 新版插件管理器 负责插件的加载、卸载、启动和停止
func NewPluginManagerV2 ¶ added in v0.0.4
func NewPluginManagerV2(logger hclog.Logger, config ManagerConfigV2) *PluginManagerV2
NewPluginManagerV2 创建一个新的插件管理器
func (*PluginManagerV2) GetPlugin ¶ added in v0.0.4
func (m *PluginManagerV2) GetPlugin(id string) (api.Plugin, bool)
GetPlugin 获取插件
func (*PluginManagerV2) GetPluginStatus ¶ added in v0.0.4
func (m *PluginManagerV2) GetPluginStatus(id string) (api.PluginStatus, error)
GetPluginStatus 获取插件状态
func (*PluginManagerV2) ListPlugins ¶ added in v0.0.4
func (m *PluginManagerV2) ListPlugins() []api.PluginInfo
ListPlugins 列出所有插件
func (*PluginManagerV2) LoadPlugin ¶ added in v0.0.4
func (m *PluginManagerV2) LoadPlugin(id string) (api.Plugin, error)
LoadPlugin 加载插件
func (*PluginManagerV2) Start ¶ added in v0.0.4
func (m *PluginManagerV2) Start() error
Start 启动插件管理器
func (*PluginManagerV2) StartPlugin ¶ added in v0.0.4
func (m *PluginManagerV2) StartPlugin(id string) error
StartPlugin 启动插件
func (*PluginManagerV2) StopPlugin ¶ added in v0.0.4
func (m *PluginManagerV2) StopPlugin(id string) error
StopPlugin 停止插件
func (*PluginManagerV2) UnloadPlugin ¶ added in v0.0.4
func (m *PluginManagerV2) UnloadPlugin(id string) error
UnloadPlugin 卸载插件
type PluginManagerV3 ¶ added in v0.0.4
type PluginManagerV3 struct {
// contains filtered or unexported fields
}
PluginManagerV3 新版插件管理器 负责插件的加载、卸载、启动和停止
func NewPluginManagerV3 ¶ added in v0.0.4
func NewPluginManagerV3(logger hclog.Logger, config ManagerConfigV3) *PluginManagerV3
NewPluginManagerV3 创建一个新的插件管理器
func (*PluginManagerV3) CreateCommunication ¶ added in v0.0.4
func (m *PluginManagerV3) CreateCommunication(protocol sdk.CommunicationProtocol, options map[string]interface{}) (sdk.Communication, error)
CreateCommunication 创建通信
func (*PluginManagerV3) ExecuteInSandbox ¶ added in v0.0.4
func (m *PluginManagerV3) ExecuteInSandbox(id string, f func() error) error
ExecuteInSandbox 在沙箱中执行函数
func (*PluginManagerV3) GeneratePluginDiagram ¶ added in v0.0.4
func (m *PluginManagerV3) GeneratePluginDiagram(outputPath string) error
GeneratePluginDiagram 生成插件依赖关系图
func (*PluginManagerV3) GeneratePluginDocs ¶ added in v0.0.4
func (m *PluginManagerV3) GeneratePluginDocs(outputDir string) error
GeneratePluginDocs 生成插件文档
func (*PluginManagerV3) GetCommunicationFactory ¶ added in v0.0.4
func (m *PluginManagerV3) GetCommunicationFactory() *communication.DefaultCommunicationFactory
GetCommunicationFactory 获取通信工厂
func (*PluginManagerV3) GetDependencyInjector ¶ added in v0.0.4
func (m *PluginManagerV3) GetDependencyInjector() *dependency.DependencyInjector
GetDependencyInjector 获取依赖注入器
func (*PluginManagerV3) GetDependencyManager ¶ added in v0.0.4
func (m *PluginManagerV3) GetDependencyManager() *dependency.DependencyManager
GetDependencyManager 获取依赖管理器
func (*PluginManagerV3) GetDependencyOrder ¶ added in v0.0.4
func (m *PluginManagerV3) GetDependencyOrder() ([]string, error)
GetDependencyOrder 获取依赖顺序
func (*PluginManagerV3) GetDependencyResolver ¶ added in v0.0.4
func (m *PluginManagerV3) GetDependencyResolver() *dependency.DependencyResolver
GetDependencyResolver 获取依赖解析器
func (*PluginManagerV3) GetIsolator ¶ added in v0.0.4
func (m *PluginManagerV3) GetIsolator() isolation.PluginIsolator
GetIsolator 获取隔离器
func (*PluginManagerV3) GetLogger ¶ added in v0.0.4
func (m *PluginManagerV3) GetLogger() hclog.Logger
GetLogger 获取日志记录器
func (*PluginManagerV3) GetPlugin ¶ added in v0.0.4
func (m *PluginManagerV3) GetPlugin(id string) (api.Plugin, bool)
GetPlugin 获取插件
func (*PluginManagerV3) GetPluginDependencies ¶ added in v0.0.4
func (m *PluginManagerV3) GetPluginDependencies(id string) ([]api.PluginDependency, error)
GetPluginDependencies 获取插件依赖
func (*PluginManagerV3) GetPluginDependents ¶ added in v0.0.4
func (m *PluginManagerV3) GetPluginDependents(id string) []string
GetPluginDependents 获取依赖于指定插件的插件
func (*PluginManagerV3) GetPluginDocGenerator ¶ added in v0.0.4
func (m *PluginManagerV3) GetPluginDocGenerator() *docs.DocGenerator
GetPluginDocGenerator 获取插件文档生成器
func (*PluginManagerV3) GetPluginStatus ¶ added in v0.0.4
func (m *PluginManagerV3) GetPluginStatus(id string) (api.PluginStatus, error)
GetPluginStatus 获取插件状态
func (*PluginManagerV3) GetRegistry ¶ added in v0.0.4
func (m *PluginManagerV3) GetRegistry() registry.PluginRegistry
GetRegistry 获取插件注册表
func (*PluginManagerV3) InjectPlugin ¶ added in v0.0.4
func (m *PluginManagerV3) InjectPlugin(id string, plugin api.Plugin)
InjectPlugin 注入插件 用于测试
func (*PluginManagerV3) ListPlugins ¶ added in v0.0.4
func (m *PluginManagerV3) ListPlugins() []api.PluginInfo
ListPlugins 列出所有插件
func (*PluginManagerV3) LoadPlugin ¶ added in v0.0.4
func (m *PluginManagerV3) LoadPlugin(id string) (api.Plugin, error)
LoadPlugin 加载插件
func (*PluginManagerV3) RegisterCommunicationHandler ¶ added in v0.0.4
func (m *PluginManagerV3) RegisterCommunicationHandler(protocol sdk.CommunicationProtocol, handler sdk.CommunicationHandler)
RegisterCommunicationHandler 注册通信处理器
func (*PluginManagerV3) Start ¶ added in v0.0.4
func (m *PluginManagerV3) Start() error
Start 启动插件管理器
func (*PluginManagerV3) StartPlugin ¶ added in v0.0.4
func (m *PluginManagerV3) StartPlugin(id string) error
StartPlugin 启动插件
func (*PluginManagerV3) StopPlugin ¶ added in v0.0.4
func (m *PluginManagerV3) StopPlugin(id string) error
StopPlugin 停止插件
func (*PluginManagerV3) UnloadPlugin ¶ added in v0.0.4
func (m *PluginManagerV3) UnloadPlugin(id string) error
UnloadPlugin 卸载插件
type PluginMetadata ¶
type PluginMetadata struct {
ID string // 插件ID
Name string // 插件名称
Version string // 插件版本
Author string // 插件作者
Description string // 插件描述
Website string // 插件网站
License string // 插件许可证
Dependencies []string // 插件依赖
Tags []string // 插件标签
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
Enabled bool // 是否启用
Optional bool // 是否可选
Path string // 插件路径
EntryPoint string // 插件入口点
IsolationLevel string // 隔离级别
}
PluginMetadata 插件元数据
func LoadPluginMetadata ¶
func LoadPluginMetadata(path string) (PluginMetadata, error)
LoadPluginMetadata 加载插件元数据
func NewPluginMetadata ¶
func NewPluginMetadata(id, name, version string) PluginMetadata
NewPluginMetadata 创建插件元数据
func (*PluginMetadata) AddDependency ¶
func (pm *PluginMetadata) AddDependency(id string)
AddDependency 添加依赖
func (*PluginMetadata) HasDependency ¶
func (pm *PluginMetadata) HasDependency(id string) bool
HasDependency 是否有依赖
type PluginSandbox ¶
type PluginSandbox struct {
// contains filtered or unexported fields
}
PluginSandbox 插件沙箱
func NewPluginSandbox ¶
func NewPluginSandbox(pluginID string, isolator *PluginIsolator, options ...PluginSandboxOption) *PluginSandbox
NewPluginSandbox 创建一个新的插件沙箱
func (*PluginSandbox) Execute ¶
func (ps *PluginSandbox) Execute(f func() error) error
Execute 在沙箱中执行函数
func (*PluginSandbox) ExecuteWithContext ¶
func (ps *PluginSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error
ExecuteWithContext 在沙箱中执行带上下文的函数
func (*PluginSandbox) GetLastActivityTime ¶
func (ps *PluginSandbox) GetLastActivityTime() time.Time
GetLastActivityTime 获取最后活动时间
func (*PluginSandbox) GetStats ¶
func (ps *PluginSandbox) GetStats() map[string]interface{}
GetStats 获取统计信息
func (*PluginSandbox) GetUptime ¶
func (ps *PluginSandbox) GetUptime() time.Duration
GetUptime 获取插件运行时间
func (*PluginSandbox) IsIdle ¶
func (ps *PluginSandbox) IsIdle(duration time.Duration) bool
IsIdle 检查插件是否空闲
func (*PluginSandbox) SetState ¶
func (ps *PluginSandbox) SetState(state PluginState)
SetState 设置插件状态
type PluginSandboxOption ¶
type PluginSandboxOption func(*PluginSandbox)
PluginSandboxOption 插件沙箱配置选项
func WithSandboxContext ¶
func WithSandboxContext(ctx context.Context) PluginSandboxOption
WithSandboxContext 设置上下文
func WithSandboxLogger ¶
func WithSandboxLogger(logger hclog.Logger) PluginSandboxOption
WithSandboxLogger 设置日志记录器
type PluginState ¶
type PluginState int
PluginState 插件状态
const ( PluginStateUnknown PluginState = iota PluginStateInitializing PluginStateRunning PluginStatePaused PluginStateStopped PluginStateError )
预定义插件状态