dependency

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: May 27, 2025 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DependencyInjector

type DependencyInjector struct {
	// contains filtered or unexported fields
}

DependencyInjector 依赖注入器 负责注入插件依赖

func NewDependencyInjector

func NewDependencyInjector(logger hclog.Logger) *DependencyInjector

NewDependencyInjector 创建一个新的依赖注入器

func (*DependencyInjector) Clear

func (i *DependencyInjector) Clear()

Clear 清除所有注册的服务和工厂

func (*DependencyInjector) GetService

func (i *DependencyInjector) GetService(name string) (interface{}, error)

GetService 获取服务

func (*DependencyInjector) Inject

func (i *DependencyInjector) Inject(target interface{}) error

Inject 注入依赖

func (*DependencyInjector) InjectByName

func (i *DependencyInjector) InjectByName(target interface{}, fieldName string, serviceName string) error

InjectByName 按名称注入依赖

func (*DependencyInjector) InjectMethod

func (i *DependencyInjector) InjectMethod(target interface{}, methodName string, args ...interface{}) ([]reflect.Value, error)

InjectMethod 注入方法参数

func (*DependencyInjector) RegisterFactory

func (i *DependencyInjector) RegisterFactory(name string, factory Factory) error

RegisterFactory 注册工厂

func (*DependencyInjector) RegisterService

func (i *DependencyInjector) RegisterService(name string, service interface{}) error

RegisterService 注册服务

type DependencyManager

type DependencyManager struct {
	// contains filtered or unexported fields
}

DependencyManager 依赖管理器 负责管理插件之间的依赖关系

func NewDependencyManager

func NewDependencyManager(logger hclog.Logger) *DependencyManager

NewDependencyManager 创建一个新的依赖管理器

func (*DependencyManager) CheckDependencies

func (m *DependencyManager) CheckDependencies(pluginID string) ([]string, error)

CheckDependencies 检查依赖

func (*DependencyManager) GetAllPlugins

func (m *DependencyManager) GetAllPlugins() []string

GetAllPlugins 获取所有插件

func (*DependencyManager) GetDependencyGraph

func (m *DependencyManager) GetDependencyGraph() map[string][]string

GetDependencyGraph 获取依赖图

func (*DependencyManager) GetDependencyOrder

func (m *DependencyManager) GetDependencyOrder() ([]string, error)

GetDependencyOrder 获取依赖顺序

func (*DependencyManager) GetDependents

func (m *DependencyManager) GetDependents(pluginID string) []string

GetDependents 获取依赖于指定插件的插件

func (*DependencyManager) GetPluginDependencies

func (m *DependencyManager) GetPluginDependencies(pluginID string) ([]api.PluginDependency, error)

GetPluginDependencies 获取插件依赖

func (*DependencyManager) GetPluginVersion

func (m *DependencyManager) GetPluginVersion(pluginID string) (string, error)

GetPluginVersion 获取插件版本

func (*DependencyManager) GetVersionMap

func (m *DependencyManager) GetVersionMap() map[string]string

GetVersionMap 获取版本映射

func (*DependencyManager) RegisterPlugin

func (m *DependencyManager) RegisterPlugin(pluginID string, version string, dependencies []api.PluginDependency) error

RegisterPlugin 注册插件

func (*DependencyManager) UnregisterPlugin

func (m *DependencyManager) UnregisterPlugin(pluginID string) error

UnregisterPlugin 注销插件

type DependencyResolver

type DependencyResolver struct {
	// contains filtered or unexported fields
}

DependencyResolver 依赖解析器 负责解析插件依赖

func NewDependencyResolver

func NewDependencyResolver(manager *DependencyManager, injector *DependencyInjector, provider PluginProvider, logger hclog.Logger) *DependencyResolver

NewDependencyResolver 创建一个新的依赖解析器

func (*DependencyResolver) Clear

func (r *DependencyResolver) Clear()

Clear 清除所有已解析的插件

func (*DependencyResolver) GetAllResolvedPlugins

func (r *DependencyResolver) GetAllResolvedPlugins() map[string]api.Plugin

GetAllResolvedPlugins 获取所有已解析的插件

func (*DependencyResolver) GetPluginService

func (r *DependencyResolver) GetPluginService(serviceName string) (interface{}, error)

GetPluginService 获取插件服务

func (*DependencyResolver) GetResolvedPlugin

func (r *DependencyResolver) GetResolvedPlugin(pluginID string) (api.Plugin, bool)

GetResolvedPlugin 获取已解析的插件

func (*DependencyResolver) InjectPluginDependencies

func (r *DependencyResolver) InjectPluginDependencies(target interface{}) error

InjectPluginDependencies 注入插件依赖

func (*DependencyResolver) InjectPluginMethod

func (r *DependencyResolver) InjectPluginMethod(target interface{}, methodName string, args ...interface{}) ([]interface{}, error)

InjectPluginMethod 注入插件方法参数

func (*DependencyResolver) RegisterPluginFactory

func (r *DependencyResolver) RegisterPluginFactory(pluginID string, serviceName string, factory Factory) error

RegisterPluginFactory 注册插件工厂

func (*DependencyResolver) RegisterPluginService

func (r *DependencyResolver) RegisterPluginService(pluginID string, serviceName string, service interface{}) error

RegisterPluginService 注册插件服务

func (*DependencyResolver) ResolveAllPluginDependencies

func (r *DependencyResolver) ResolveAllPluginDependencies() error

ResolveAllPluginDependencies 解析所有插件依赖

func (*DependencyResolver) ResolvePluginDependencies

func (r *DependencyResolver) ResolvePluginDependencies(pluginID string) error

ResolvePluginDependencies 解析插件依赖

type Factory

type Factory func() (interface{}, error)

Factory 工厂函数 用于创建服务实例

type PluginProvider

type PluginProvider interface {
	// GetPlugin 获取插件
	// id: 插件ID
	// 返回: 插件实例和是否存在
	GetPlugin(id string) (api.Plugin, bool)
}

PluginProvider 插件提供者接口 用于获取插件实例

Jump to

Keyboard shortcuts

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