plugin

package
v0.0.0-...-01b7989 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 4, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

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 插件容器

func (*PluginContainer) Init

func (pc *PluginContainer) Init(ctx context.Context) error

Init 初始化容器

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 资源管理器

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL