Documentation
¶
Index ¶
- func CreateLogger(name, level string, output string) (hclog.Logger, error)
- func CreatePluginInfoFromConfig(config map[string]interface{}) (api.PluginInfo, error)
- func DisableBlockProfile()
- func DisableMutexProfile()
- func DumpGoroutineProfile(path string) error
- func DumpHeapProfile(path string) error
- func EnableBlockProfile()
- func EnableMutexProfile()
- func FormatPluginError(pluginID, message string, err error) error
- func GetPluginConfigDir(pluginID string) (string, error)
- func GetPluginDataDir(pluginID string) (string, error)
- func GetPluginLogDir(pluginID string) (string, error)
- func LoadConfig(path string, config interface{}) error
- func MergeConfig(target, source interface{}) error
- func ParsePluginConfig(configData map[string]interface{}) (api.PluginConfig, error)
- func RetryWithBackoff(ctx context.Context, fn func() error, maxRetries int, ...) error
- func Run(plugin api.Plugin, config RunnerConfig) error
- func SaveConfig(path string, config interface{}) error
- func StartCPUProfile(path string) (*os.File, error)
- func StopCPUProfile(f *os.File)
- func ValidatePluginInfo(info api.PluginInfo) error
- func WaitForSignal(ctx context.Context, signals <-chan os.Signal) os.Signal
- type BasePlugin
- func (p *BasePlugin) GetConfig() api.PluginConfig
- func (p *BasePlugin) GetInfo() api.PluginInfo
- func (p *BasePlugin) GetLastError() error
- func (p *BasePlugin) GetLogger() hclog.Logger
- func (p *BasePlugin) GetStartTime() time.Time
- func (p *BasePlugin) GetState() api.PluginState
- func (p *BasePlugin) GetStats() map[string]interface{}
- func (p *BasePlugin) GetStopTime() time.Time
- func (p *BasePlugin) HealthCheck(ctx context.Context) (api.HealthStatus, error)
- func (p *BasePlugin) IncrementStat(key string, delta int64)
- func (p *BasePlugin) Init(ctx context.Context, config api.PluginConfig) error
- func (p *BasePlugin) SetConfig(config api.PluginConfig)
- func (p *BasePlugin) SetLastError(err error)
- func (p *BasePlugin) SetLogger(logger hclog.Logger)
- func (p *BasePlugin) SetStat(key string, value interface{})
- func (p *BasePlugin) SetState(state api.PluginState)
- func (p *BasePlugin) Start(ctx context.Context) error
- func (p *BasePlugin) Stop(ctx context.Context) error
- type Communication
- type CommunicationFactory
- type CommunicationHandler
- type CommunicationProtocol
- type ConfigManager
- func (cm *ConfigManager) Get(key string) interface{}
- func (cm *ConfigManager) GetBool(key string) bool
- func (cm *ConfigManager) GetConfigDir() string
- func (cm *ConfigManager) GetConfigFile() string
- func (cm *ConfigManager) GetConfigPath() string
- func (cm *ConfigManager) GetData() map[string]interface{}
- func (cm *ConfigManager) GetFloat(key string) float64
- func (cm *ConfigManager) GetInt(key string) int
- func (cm *ConfigManager) GetPluginConfig() (api.PluginConfig, error)
- func (cm *ConfigManager) GetString(key string) string
- func (cm *ConfigManager) GetStringMap(key string) map[string]string
- func (cm *ConfigManager) GetStringSlice(key string) []string
- func (cm *ConfigManager) GetStruct(key string, result interface{}) error
- func (cm *ConfigManager) Load() error
- func (cm *ConfigManager) Save() error
- func (cm *ConfigManager) Set(key string, value interface{})
- func (cm *ConfigManager) SetData(data map[string]interface{})
- func (cm *ConfigManager) SetPluginConfig(config api.PluginConfig)
- type ConfigOption
- type DebugOption
- type DebugServer
- type DefaultCommunicationFactory
- type GRPCPluginAdapter
- type HealthCheckFunc
- type InProcessCommunication
- func (c *InProcessCommunication) Close() error
- func (c *InProcessCommunication) GetService(name string) (interface{}, error)
- func (c *InProcessCommunication) Publish(topic string, message interface{}) error
- func (c *InProcessCommunication) ReceiveMessage() (string, interface{}, error)
- func (c *InProcessCommunication) RegisterService(service interface{}) error
- func (c *InProcessCommunication) SendMessage(target string, message interface{}) error
- func (c *InProcessCommunication) Subscribe(topic string, handler func(message interface{})) error
- type InitFunc
- type Message
- type PluginBuilder
- func (b *PluginBuilder) Build() api.Plugin
- func (b *PluginBuilder) WithAuthor(author string) *PluginBuilder
- func (b *PluginBuilder) WithCapability(capability string) *PluginBuilder
- func (b *PluginBuilder) WithDependency(id, version string, optional bool) *PluginBuilder
- func (b *PluginBuilder) WithDescription(description string) *PluginBuilder
- func (b *PluginBuilder) WithHealthCheckFunc(healthCheckFunc HealthCheckFunc) *PluginBuilder
- func (b *PluginBuilder) WithInitFunc(initFunc InitFunc) *PluginBuilder
- func (b *PluginBuilder) WithLicense(license string) *PluginBuilder
- func (b *PluginBuilder) WithLogger(logger hclog.Logger) *PluginBuilder
- func (b *PluginBuilder) WithName(name string) *PluginBuilder
- func (b *PluginBuilder) WithStartFunc(startFunc StartFunc) *PluginBuilder
- func (b *PluginBuilder) WithStopFunc(stopFunc StopFunc) *PluginBuilder
- func (b *PluginBuilder) WithTag(tag string) *PluginBuilder
- func (b *PluginBuilder) WithVersion(version string) *PluginBuilder
- type PluginRunner
- type RunnerConfig
- type StartFunc
- type StopFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateLogger ¶
CreateLogger 创建日志记录器 name: 日志记录器名称 level: 日志级别 output: 日志输出 返回: 日志记录器
func CreatePluginInfoFromConfig ¶
func CreatePluginInfoFromConfig(config map[string]interface{}) (api.PluginInfo, error)
CreatePluginInfoFromConfig 从配置创建插件信息 config: 配置数据 返回: 插件信息和错误
func DumpGoroutineProfile ¶
DumpGoroutineProfile 导出goroutine分析
func FormatPluginError ¶
FormatPluginError 格式化插件错误 pluginID: 插件ID message: 错误消息 err: 原始错误 返回: 格式化的错误
func GetPluginConfigDir ¶
GetPluginConfigDir 获取插件配置目录 pluginID: 插件ID 返回: 配置目录路径和错误
func GetPluginDataDir ¶
GetPluginDataDir 获取插件数据目录 pluginID: 插件ID 返回: 数据目录路径和错误
func GetPluginLogDir ¶
GetPluginLogDir 获取插件日志目录 pluginID: 插件ID 返回: 日志目录路径和错误
func LoadConfig ¶
LoadConfig 从文件加载配置 path: 配置文件路径 config: 配置对象指针 返回: 错误
func MergeConfig ¶
func MergeConfig(target, source interface{}) error
MergeConfig 合并配置 target: 目标配置对象指针 source: 源配置对象 返回: 错误
func ParsePluginConfig ¶
func ParsePluginConfig(configData map[string]interface{}) (api.PluginConfig, error)
ParsePluginConfig 解析插件配置 configData: 配置数据 返回: 插件配置和错误
func RetryWithBackoff ¶
func RetryWithBackoff(ctx context.Context, fn func() error, maxRetries int, initialBackoff, maxBackoff time.Duration) error
RetryWithBackoff 带退避的重试 ctx: 上下文 fn: 要重试的函数 maxRetries: 最大重试次数 initialBackoff: 初始退避时间 maxBackoff: 最大退避时间 返回: 错误
func SaveConfig ¶
SaveConfig 保存配置到文件 path: 配置文件路径 config: 配置对象 返回: 错误
func ValidatePluginInfo ¶
func ValidatePluginInfo(info api.PluginInfo) error
ValidatePluginInfo 验证插件信息 info: 插件信息 返回: 错误
Types ¶
type BasePlugin ¶
type BasePlugin struct {
// contains filtered or unexported fields
}
BasePlugin 提供了Plugin接口的基础实现 可以被具体的插件实现嵌入以减少重复代码
func NewBasePlugin ¶
func NewBasePlugin(info api.PluginInfo, logger hclog.Logger) *BasePlugin
NewBasePlugin 创建一个新的基础插件
func (*BasePlugin) GetStats ¶
func (p *BasePlugin) GetStats() map[string]interface{}
GetStats 获取统计信息
func (*BasePlugin) HealthCheck ¶
func (p *BasePlugin) HealthCheck(ctx context.Context) (api.HealthStatus, error)
HealthCheck 执行健康检查
func (*BasePlugin) IncrementStat ¶
func (p *BasePlugin) IncrementStat(key string, delta int64)
IncrementStat 增加统计计数
func (*BasePlugin) Init ¶
func (p *BasePlugin) Init(ctx context.Context, config api.PluginConfig) error
Init 初始化插件
func (*BasePlugin) SetConfig ¶
func (p *BasePlugin) SetConfig(config api.PluginConfig)
SetConfig 设置插件配置
func (*BasePlugin) SetLastError ¶
func (p *BasePlugin) SetLastError(err error)
SetLastError 设置最后一个错误
func (*BasePlugin) SetLogger ¶
func (p *BasePlugin) SetLogger(logger hclog.Logger)
SetLogger 设置日志记录器
func (*BasePlugin) SetStat ¶
func (p *BasePlugin) SetStat(key string, value interface{})
SetStat 设置统计信息
type Communication ¶
type Communication interface {
// RegisterService 注册服务
// service: 服务实例
// 返回: 错误
RegisterService(service interface{}) error
// GetService 获取服务
// name: 服务名称
// 返回: 服务实例和错误
GetService(name string) (interface{}, error)
// SendMessage 发送消息
// target: 目标
// message: 消息内容
// 返回: 错误
SendMessage(target string, message interface{}) error
// ReceiveMessage 接收消息
// 返回: 源、消息内容和错误
ReceiveMessage() (string, interface{}, error)
// Subscribe 订阅主题
// topic: 主题
// handler: 处理函数
// 返回: 错误
Subscribe(topic string, handler func(message interface{})) error
// Publish 发布消息到主题
// topic: 主题
// message: 消息内容
// 返回: 错误
Publish(topic string, message interface{}) error
// Close 关闭通信
// 返回: 错误
Close() error
}
Communication 定义了通信接口 提供了插件与主框架之间以及插件之间的通信能力
type CommunicationFactory ¶
type CommunicationFactory interface {
// CreateCommunication 创建通信实例
// protocol: 通信协议
// options: 选项
// 返回: 通信实例和错误
CreateCommunication(protocol CommunicationProtocol, options map[string]interface{}) (Communication, error)
}
CommunicationFactory 定义了通信工厂 用于创建不同协议的通信实例
type CommunicationHandler ¶
type CommunicationHandler func(options map[string]interface{}) (Communication, error)
CommunicationHandler 定义了通信处理器
type CommunicationProtocol ¶
type CommunicationProtocol string
CommunicationProtocol 定义了通信协议
const ( ProtocolGRPC CommunicationProtocol = "grpc" // gRPC协议 ProtocolHTTP CommunicationProtocol = "http" // HTTP协议 ProtocolWebSocket CommunicationProtocol = "websocket" // WebSocket协议 ProtocolInProcess CommunicationProtocol = "inprocess" // 进程内通信 )
预定义的通信协议
type ConfigManager ¶
type ConfigManager struct {
// contains filtered or unexported fields
}
ConfigManager 配置管理器 负责管理插件配置
func NewConfigManager ¶
func NewConfigManager(pluginID string, logger hclog.Logger, options ...ConfigOption) (*ConfigManager, error)
NewConfigManager 创建一个新的配置管理器
func (*ConfigManager) GetConfigDir ¶
func (cm *ConfigManager) GetConfigDir() string
GetConfigDir 获取配置目录
func (*ConfigManager) GetConfigFile ¶
func (cm *ConfigManager) GetConfigFile() string
GetConfigFile 获取配置文件
func (*ConfigManager) GetConfigPath ¶
func (cm *ConfigManager) GetConfigPath() string
GetConfigPath 获取配置文件路径
func (*ConfigManager) GetData ¶
func (cm *ConfigManager) GetData() map[string]interface{}
GetData 获取配置数据
func (*ConfigManager) GetFloat ¶
func (cm *ConfigManager) GetFloat(key string) float64
GetFloat 获取浮点数配置值
func (*ConfigManager) GetPluginConfig ¶
func (cm *ConfigManager) GetPluginConfig() (api.PluginConfig, error)
GetPluginConfig 获取插件配置
func (*ConfigManager) GetString ¶
func (cm *ConfigManager) GetString(key string) string
GetString 获取字符串配置值
func (*ConfigManager) GetStringMap ¶
func (cm *ConfigManager) GetStringMap(key string) map[string]string
GetStringMap 获取字符串映射配置值
func (*ConfigManager) GetStringSlice ¶
func (cm *ConfigManager) GetStringSlice(key string) []string
GetStringSlice 获取字符串切片配置值
func (*ConfigManager) GetStruct ¶
func (cm *ConfigManager) GetStruct(key string, result interface{}) error
GetStruct 获取结构体配置值
func (*ConfigManager) SetData ¶
func (cm *ConfigManager) SetData(data map[string]interface{})
SetData 设置配置数据
func (*ConfigManager) SetPluginConfig ¶
func (cm *ConfigManager) SetPluginConfig(config api.PluginConfig)
SetPluginConfig 设置插件配置
type DebugServer ¶
type DebugServer struct {
// contains filtered or unexported fields
}
DebugServer 调试服务器 提供插件调试功能
func NewDebugServer ¶
func NewDebugServer(pluginID string, logger hclog.Logger, options ...DebugOption) *DebugServer
NewDebugServer 创建一个新的调试服务器
func (*DebugServer) RegisterHandler ¶
func (ds *DebugServer) RegisterHandler(path string, handler http.HandlerFunc)
RegisterHandler 注册处理器
type DefaultCommunicationFactory ¶
type DefaultCommunicationFactory struct {
// contains filtered or unexported fields
}
DefaultCommunicationFactory 默认通信工厂实现
func NewCommunicationFactory ¶
func NewCommunicationFactory() *DefaultCommunicationFactory
NewCommunicationFactory 创建一个新的通信工厂
func (*DefaultCommunicationFactory) CreateCommunication ¶
func (f *DefaultCommunicationFactory) CreateCommunication(protocol CommunicationProtocol, options map[string]interface{}) (Communication, error)
CreateCommunication 创建通信实例
func (*DefaultCommunicationFactory) RegisterHandler ¶
func (f *DefaultCommunicationFactory) RegisterHandler(protocol CommunicationProtocol, handler CommunicationHandler)
RegisterHandler 注册协议处理器
type GRPCPluginAdapter ¶
GRPCPluginAdapter gRPC插件适配器 用于将我们的插件接口适配到Hashicorp的插件接口
func (*GRPCPluginAdapter) GRPCClient ¶
func (p *GRPCPluginAdapter) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c interface{}) (interface{}, error)
GRPCClient 实现Plugin接口
func (*GRPCPluginAdapter) GRPCServer ¶
func (p *GRPCPluginAdapter) GRPCServer(broker *plugin.GRPCBroker, s interface{}) error
GRPCServer 实现Plugin接口
type HealthCheckFunc ¶
type HealthCheckFunc func(ctx context.Context) (api.HealthStatus, error)
HealthCheckFunc 定义了健康检查函数类型
type InProcessCommunication ¶
type InProcessCommunication struct {
// contains filtered or unexported fields
}
InProcessCommunication 进程内通信实现
func (*InProcessCommunication) GetService ¶
func (c *InProcessCommunication) GetService(name string) (interface{}, error)
GetService 获取服务
func (*InProcessCommunication) Publish ¶
func (c *InProcessCommunication) Publish(topic string, message interface{}) error
Publish 发布消息到主题
func (*InProcessCommunication) ReceiveMessage ¶
func (c *InProcessCommunication) ReceiveMessage() (string, interface{}, error)
ReceiveMessage 接收消息
func (*InProcessCommunication) RegisterService ¶
func (c *InProcessCommunication) RegisterService(service interface{}) error
RegisterService 注册服务
func (*InProcessCommunication) SendMessage ¶
func (c *InProcessCommunication) SendMessage(target string, message interface{}) error
SendMessage 发送消息
func (*InProcessCommunication) Subscribe ¶
func (c *InProcessCommunication) Subscribe(topic string, handler func(message interface{})) error
Subscribe 订阅主题
type InitFunc ¶
type InitFunc func(ctx context.Context, config api.PluginConfig) error
InitFunc 定义了初始化函数类型
type PluginBuilder ¶
type PluginBuilder struct {
// contains filtered or unexported fields
}
PluginBuilder 用于构建插件 提供了流式API,简化插件的创建过程
func NewPluginBuilder ¶
func NewPluginBuilder(id string) *PluginBuilder
NewPluginBuilder 创建一个新的插件构建器
func (*PluginBuilder) WithAuthor ¶
func (b *PluginBuilder) WithAuthor(author string) *PluginBuilder
WithAuthor 设置插件作者
func (*PluginBuilder) WithCapability ¶
func (b *PluginBuilder) WithCapability(capability string) *PluginBuilder
WithCapability 添加插件能力
func (*PluginBuilder) WithDependency ¶
func (b *PluginBuilder) WithDependency(id, version string, optional bool) *PluginBuilder
WithDependency 添加插件依赖
func (*PluginBuilder) WithDescription ¶
func (b *PluginBuilder) WithDescription(description string) *PluginBuilder
WithDescription 设置插件描述
func (*PluginBuilder) WithHealthCheckFunc ¶
func (b *PluginBuilder) WithHealthCheckFunc(healthCheckFunc HealthCheckFunc) *PluginBuilder
WithHealthCheckFunc 设置健康检查函数
func (*PluginBuilder) WithInitFunc ¶
func (b *PluginBuilder) WithInitFunc(initFunc InitFunc) *PluginBuilder
WithInitFunc 设置初始化函数
func (*PluginBuilder) WithLicense ¶
func (b *PluginBuilder) WithLicense(license string) *PluginBuilder
WithLicense 设置插件许可证
func (*PluginBuilder) WithLogger ¶
func (b *PluginBuilder) WithLogger(logger hclog.Logger) *PluginBuilder
WithLogger 设置日志记录器
func (*PluginBuilder) WithName ¶
func (b *PluginBuilder) WithName(name string) *PluginBuilder
WithName 设置插件名称
func (*PluginBuilder) WithStartFunc ¶
func (b *PluginBuilder) WithStartFunc(startFunc StartFunc) *PluginBuilder
WithStartFunc 设置启动函数
func (*PluginBuilder) WithStopFunc ¶
func (b *PluginBuilder) WithStopFunc(stopFunc StopFunc) *PluginBuilder
WithStopFunc 设置停止函数
func (*PluginBuilder) WithTag ¶
func (b *PluginBuilder) WithTag(tag string) *PluginBuilder
WithTag 添加插件标签
func (*PluginBuilder) WithVersion ¶
func (b *PluginBuilder) WithVersion(version string) *PluginBuilder
WithVersion 设置插件版本
type PluginRunner ¶
type PluginRunner struct {
// contains filtered or unexported fields
}
PluginRunner 用于运行插件 处理插件的启动、停止和生命周期管理
func NewPluginRunner ¶
func NewPluginRunner(plugin api.Plugin, config RunnerConfig) *PluginRunner
NewPluginRunner 创建一个新的插件运行器
type RunnerConfig ¶
type RunnerConfig struct {
// 插件ID
PluginID string
// 通信协议
Protocol CommunicationProtocol
// 通信选项
CommOptions map[string]interface{}
// 日志级别
LogLevel string
// 日志文件
LogFile string
// 优雅关闭超时
ShutdownTimeout time.Duration
// 健康检查间隔
HealthCheckInterval time.Duration
}
RunnerConfig 定义了运行器配置