plugin

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2021 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

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

func GetPluginId

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

GetPlugin 获取插件

func IsPluginRegistered

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

检查插件是否已经注册

func RegisterConfigurablePlugin

func RegisterConfigurablePlugin(plugin Plugin, cfg config.BaseConfig)

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

func RegisterPlugin

func RegisterPlugin(plugin Plugin)

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

func RegisterPluginInterface

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

注册插件接口类型

func RegisterPluginProxy

func RegisterPluginProxy(typ common.Type, proxy PluginProxy)

注册插件proxy类型

Types

type InitContext

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

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

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
}

*

  • @brief 插件管理器统一接口

func NewPluginManager

func NewPluginManager() Manager

NewPluginManager 创建插件管理器实例

type Plugin

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

Plugin 所有插件的基础接口

type PluginBase

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

Plugin Base

func NewPluginBase

func NewPluginBase(ctx *InitContext) *PluginBase

创建pluginbase

func (*PluginBase) Destroy

func (b *PluginBase) Destroy() error

destroy

func (*PluginBase) GetSDKContextID

func (b *PluginBase) GetSDKContextID() string

获取所属sdkContext的uuid

func (*PluginBase) ID

func (b *PluginBase) ID() int32

插件id

func (*PluginBase) Init

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

init

func (*PluginBase) IsEnable

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

is enable

func (*PluginBase) Name

func (b *PluginBase) Name() string

name

func (*PluginBase) Start

func (b *PluginBase) Start() error

启动插件

func (*PluginBase) Type

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

type

type PluginProxy

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

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(event common.PluginEventType) []common.PluginEventHandler
	//注册插件事件监听器,必须在Plugin.Init方法中进行,否则会出现并发读写问题
	RegisterEventSubscriber(event common.PluginEventType, handler common.PluginEventHandler)
}

*

  • @brief 插件提供者

Jump to

Keyboard shortcuts

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