Documentation
¶
Overview ¶
plugin/container.go
plugin/extension.go
plugin/manager.go
plugin/plugin.go
plugin/types.go
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContainerConfig ¶
type ContainerConfig struct {
// 隔离选项
IsolationOpts IsolationOptions
// 资源限制
ResourceLimits ResourceLimits
// 监控选项
MonitorOpts MonitorOptions
// 生命周期钩子
Lifecycle LifecycleHooks
}
ContainerConfig 容器配置
type Dependency ¶
type Dependency struct {
ID string `json:"id"`
Version string `json:"version"`
Required bool `json:"required"`
MinVersion string `json:"min_version,omitempty"`
MaxVersion string `json:"max_version,omitempty"`
}
Dependency 插件依赖
type Extension ¶
type Extension interface {
ID() string
Type() string
Version() string
Init(ctx context.Context) error
Start(ctx context.Context) error
Stop(ctx context.Context) error
}
Extension 扩展接口
type ExtensionPoint ¶
type ExtensionPoint interface {
ID() string
Description() string
AddExtension(ext Extension) error
RemoveExtension(id string) error
GetExtensions() []Extension
}
ExtensionPoint 扩展点接口
type ExtensionRegistry ¶
type ExtensionRegistry struct {
// contains filtered or unexported fields
}
ExtensionRegistry 扩展注册表
type ManagerConfig ¶
type ManagerConfig struct {
// 插件目录
PluginDirs []string
// 并发限制
MaxConcurrent int
// 加载超时
LoadTimeout time.Duration
// 自动重载
AutoReload bool
// 依赖检查
CheckDependencies bool
// 版本约束
VersionConstraints map[string]string
}
ManagerConfig 管理器配置
type Plugin ¶
type Plugin interface {
// 基本信息
Info() *PluginInfo
State() PluginState
// 生命周期管理
Init(ctx context.Context) error
Start(ctx context.Context) error
Stop(ctx context.Context) error
Reload(ctx context.Context) error
// 健康检查
HealthCheck(ctx context.Context) error
// 资源管理
Cleanup() error
// 扩展点
GetExtensionPoints() []ExtensionPoint
GetExtensions() []Extension
}
Plugin 插件接口
type PluginContainer ¶
type PluginContainer struct {
// contains filtered or unexported fields
}
PluginContainer 插件容器
type PluginImpl ¶
type PluginImpl struct {
// contains filtered or unexported fields
}
PluginImpl 插件基础实现
func NewPlugin ¶
func NewPlugin(info *PluginInfo, opts ...PluginOption) (*PluginImpl, error)
NewPlugin 创建新插件
func (*PluginImpl) RegisterExtension ¶
func (p *PluginImpl) RegisterExtension(ext Extension) error
RegisterExtension 注册扩展
type PluginInfo ¶
type PluginInfo struct {
ID string `json:"id"`
Name string `json:"name"`
Version string `json:"version"`
Author string `json:"author"`
Description string `json:"description"`
Homepage string `json:"homepage"`
License string `json:"license"`
Tags []string `json:"tags"`
Metadata map[string]string `json:"metadata"`
Dependencies []Dependency `json:"dependencies"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
PluginInfo 插件信息
type PluginIsolator ¶
type PluginIsolator struct {
// contains filtered or unexported fields
}
PluginIsolator 插件隔离器
type PluginManager ¶
type PluginManager struct {
// contains filtered or unexported fields
}
PluginManager 插件管理器
func (*PluginManager) LoadPlugin ¶
func (pm *PluginManager) LoadPlugin(ctx context.Context, path string) error
LoadPlugin 加载插件
func (*PluginManager) UnloadPlugin ¶
func (pm *PluginManager) UnloadPlugin(ctx context.Context, id string) error
UnloadPlugin 卸载插件
type PluginState ¶
type PluginState int
PluginState 插件状态
const ( PluginStateUnknown PluginState = iota PluginStateInitializing PluginStateActive PluginStatePaused PluginStateError PluginStateTerminated )
type ResourceManager ¶
type ResourceManager struct {
// contains filtered or unexported fields
}
ResourceManager 资源管理器
Click to show internal directories.
Click to hide internal directories.