plugin

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2023 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 3 more Imports: 9 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPluginCount

func GetPluginCount(typ common.Type) int

GetPluginCount 获取某个类型下注册的插件数量

func GetPluginId

func GetPluginId(typ common.Type, name string) (int32, error)

GetPluginId 获取插件

func IsPluginRegistered

func IsPluginRegistered(typ common.Type, name string) bool

IsPluginRegistered 检查插件是否已经注册

func RegisterConfigurablePlugin

func RegisterConfigurablePlugin(plugin Plugin, cfg config.BaseConfig)

RegisterConfigurablePlugin 注册插件到全局配置对象,并注册插件配置类型

func RegisterPlugin

func RegisterPlugin(plugin Plugin)

RegisterPlugin 注册插件到全局配置对象,插件名重复则返回错误

func RegisterPluginInterface

func RegisterPluginInterface(typ common.Type, plugin interface{})

RegisterPluginInterface 注册插件接口类型

func RegisterPluginProxy

func RegisterPluginProxy(typ common.Type, proxy PluginProxy)

RegisterPluginProxy 注册插件proxy类型

Types

type InitContext

type InitContext struct {
	Config       config.Configuration
	Plugins      Supplier
	ValueCtx     model.ValueContext
	ConnManager  network.ConnectionManager
	PluginIndex  int32
	SDKContextID string
}

InitContext 用于插件初始化的上下文对象

type Manager

type Manager interface {
	Supplier
	// InitPlugins 初始化插件列表
	InitPlugins(initContext InitContext, types []common.Type, engine model.Engine, delegate func() error) (err error)
	// DestroyPlugins 销毁已初始化的插件列表
	DestroyPlugins() (err error)
	// StartPlugins 执行已经初始化完毕的插件
	StartPlugins() error
}

Manager 插件管理器统一接口

func NewPluginManager

func NewPluginManager() Manager

NewPluginManager 创建插件管理器实例

type Plugin

type Plugin interface {
	// Type 插件类型
	Type() common.Type
	// ID 插件id
	ID() int32
	// GetSDKContextID 返回插件所属的sdkContext的uuid
	GetSDKContextID() string
	// Name 插件名,一个类型下插件名唯一
	Name() string
	// Init 初始化插件
	Init(ctx *InitContext) error
	// Start 启动插件,对于需要依赖外部资源,以及启动协程的操作,在Start方法里面做
	Start() error
	// Destroy 销毁插件,可用于释放资源
	Destroy() error
	// IsEnable 插件是否启用
	IsEnable(cfg config.Configuration) bool
}

Plugin 所有插件的基础接口

type PluginBase

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

PluginBase Plugin Base

func NewPluginBase

func NewPluginBase(ctx *InitContext) *PluginBase

NewPluginBase 创建pluginbase

func (*PluginBase) Destroy

func (b *PluginBase) Destroy() error

Destroy 销毁插件

func (*PluginBase) GetSDKContextID

func (b *PluginBase) GetSDKContextID() string

GetSDKContextID 获取所属sdkContext的uuid

func (*PluginBase) ID

func (b *PluginBase) ID() int32

ID 插件id

func (*PluginBase) Init

func (b *PluginBase) Init(ctx *InitContext) error

Init init

func (*PluginBase) IsEnable

func (b *PluginBase) IsEnable(cfg config.Configuration) bool

IsEnable is enable

func (*PluginBase) Name

func (b *PluginBase) Name() string

Name 返回插件名

func (*PluginBase) Start

func (b *PluginBase) Start() error

Start 启动插件

func (*PluginBase) Type

func (b *PluginBase) Type() common.Type

Type 插件类型

type PluginProxy

type PluginProxy interface {
	Plugin
	SetRealPlugin(plugin Plugin, engine model.Engine)
}

PluginProxy Plugin的代理

type Supplier

type Supplier interface {
	// GetPlugin 获取插件实例
	GetPlugin(typ common.Type, name string) (Plugin, error)
	// GetPluginById 通过id获取插件实例
	GetPluginById(id int32) (Plugin, error)
	// GetPluginsByType 获取一个类型的加载了的插件名字
	GetPluginsByType(typ common.Type) []string
	// GetEventSubscribers 获取插件事件监听器
	GetEventSubscribers(event common.PluginEventType) []common.PluginEventHandler
	// RegisterEventSubscriber 注册插件事件监听器,必须在Plugin.Init方法中进行,否则会出现并发读写问题
	RegisterEventSubscriber(event common.PluginEventType, handler common.PluginEventHandler)
}

Supplier 插件提供者

Jump to

Keyboard shortcuts

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