define

package
v0.4.27 Latest Latest
Warning

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

Go to latest
Published: Aug 12, 2026 License: LGPL-2.1 Imports: 6 Imported by: 43

Documentation

Overview

Package define 为插件声明提供类型安全的辅助定义。

Package define 把插件构造函数、接口类型和插件名称封装成可复用的定义对象,避免 业务代码反复编写名称、ID 计算和类型断言。

定义对象会暴露 Install、Uninstall、Require 和 Lookup 等操作,适合在包级变量中 声明后复用。常用入口包括:

  • AddIn:同时适用于 service 与 runtime 的通用插件定义;
  • ServiceAddIn / RuntimeAddIn:分别提供 service.Context 与 runtime.Context 类型的 Require 和 Lookup 函数;
  • AddInInterface 等 Interface 变体:只声明依赖契约,不绑定构造函数。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddInDefinition added in v0.3.66

type AddInDefinition[ADDIN_IFACE, SETTING any] struct {
	Id        uint64                                                        // 由 Name 生成的插件 ID。
	Name      string                                                        // 插件注册名称。
	Install   generic.ActionVar1[extension.AddInProvider, SETTING]          // 构造插件并安装到给定提供者。
	Uninstall generic.Action1[extension.AddInProvider]                      // 从给定提供者卸载插件。
	Require   generic.Func1[extension.AddInProvider, ADDIN_IFACE]           // 获取正在运行的插件,不可用时 panic。
	Lookup    generic.FuncPair1[extension.AddInProvider, ADDIN_IFACE, bool] // 查询管理器当前持有的插件。
}

AddInDefinition 封装通用插件的标识、构造和访问操作。

func AddIn added in v0.3.66

func AddIn[ADDIN_IFACE, SETTING any](creator generic.FuncVar0[SETTING, ADDIN_IFACE], name ...string) AddInDefinition[ADDIN_IFACE, SETTING]

AddIn 创建可用于任意 extension.AddInProvider 的通用插件定义。 ADDIN_IFACE 必须是接口类型。未指定名称时使用 ADDIN_IFACE 的完整限定名; creator 为 nil 或名称无效时会 panic。

type AddInInterfaceDefinition added in v0.3.66

type AddInInterfaceDefinition[ADDIN_IFACE any] struct {
	Id      uint64                                                        // 由 Name 生成的插件 ID。
	Name    string                                                        // 插件注册名称。
	Require generic.Func1[extension.AddInProvider, ADDIN_IFACE]           // 获取正在运行的插件,不可用时 panic。
	Lookup  generic.FuncPair1[extension.AddInProvider, ADDIN_IFACE, bool] // 查询管理器当前持有的插件。
}

AddInInterfaceDefinition 封装通用插件接口的标识和访问操作。

func AddInInterface added in v0.3.66

func AddInInterface[ADDIN_IFACE any](name ...string) AddInInterfaceDefinition[ADDIN_IFACE]

AddInInterface 创建不绑定构造函数的通用插件接口定义。 它适合用同一名称约定访问同类插件的不同实现。

type RuntimeAddInDefinition added in v0.3.66

type RuntimeAddInDefinition[ADDIN_IFACE, SETTING any] struct {
	Id        uint64                                                // 由 Name 生成的插件 ID。
	Name      string                                                // 插件注册名称。
	Install   generic.ActionVar1[extension.AddInProvider, SETTING]  // 构造插件并安装到给定提供者。
	Uninstall generic.Action1[extension.AddInProvider]              // 从给定提供者卸载插件。
	Require   generic.Func1[runtime.Context, ADDIN_IFACE]           // 从运行时获取正在运行的插件,不可用时 panic。
	Lookup    generic.FuncPair1[runtime.Context, ADDIN_IFACE, bool] // 查询运行时管理器当前持有的插件。
}

RuntimeAddInDefinition 封装运行时插件的标识、构造和访问操作。

func RuntimeAddIn added in v0.3.66

func RuntimeAddIn[ADDIN_IFACE, SETTING any](creator generic.FuncVar0[SETTING, ADDIN_IFACE], name ...string) RuntimeAddInDefinition[ADDIN_IFACE, SETTING]

RuntimeAddIn 创建运行时插件定义,其 Require 和 Lookup 直接接受 runtime.Context。 ADDIN_IFACE 必须是接口类型。

type RuntimeAddInInterfaceDefinition added in v0.3.66

type RuntimeAddInInterfaceDefinition[ADDIN_IFACE any] struct {
	Id      uint64                                                // 由 Name 生成的插件 ID。
	Name    string                                                // 插件注册名称。
	Require generic.Func1[runtime.Context, ADDIN_IFACE]           // 从运行时获取正在运行的插件,不可用时 panic。
	Lookup  generic.FuncPair1[runtime.Context, ADDIN_IFACE, bool] // 查询运行时管理器当前持有的插件。
}

RuntimeAddInInterfaceDefinition 封装运行时插件接口的标识和访问操作。

func RuntimeAddInInterface added in v0.3.66

func RuntimeAddInInterface[ADDIN_IFACE any](name ...string) RuntimeAddInInterfaceDefinition[ADDIN_IFACE]

RuntimeAddInInterface 创建不绑定构造函数的运行时插件接口定义。 它适合通过 runtime.Context 访问同类插件的不同实现。

type ServiceAddInDefinition added in v0.3.66

type ServiceAddInDefinition[ADDIN_IFACE, SETTING any] struct {
	Id        uint64                                                // 由 Name 生成的插件 ID。
	Name      string                                                // 插件注册名称。
	Install   generic.ActionVar1[extension.AddInProvider, SETTING]  // 构造插件并安装到给定提供者。
	Uninstall generic.Action1[extension.AddInProvider]              // 从给定提供者卸载插件。
	Require   generic.Func1[service.Context, ADDIN_IFACE]           // 从服务获取正在运行的插件,不可用时 panic。
	Lookup    generic.FuncPair1[service.Context, ADDIN_IFACE, bool] // 查询服务管理器当前持有的插件。
}

ServiceAddInDefinition 封装服务插件的标识、构造和访问操作。

func ServiceAddIn added in v0.3.66

func ServiceAddIn[ADDIN_IFACE, SETTING any](creator generic.FuncVar0[SETTING, ADDIN_IFACE], name ...string) ServiceAddInDefinition[ADDIN_IFACE, SETTING]

ServiceAddIn 创建服务插件定义,其 Require 和 Lookup 直接接受 service.Context。 ADDIN_IFACE 必须是接口类型。

type ServiceAddInInterfaceDefinition added in v0.3.66

type ServiceAddInInterfaceDefinition[ADDIN_IFACE any] struct {
	Id      uint64                                                // 由 Name 生成的插件 ID。
	Name    string                                                // 插件注册名称。
	Require generic.Func1[service.Context, ADDIN_IFACE]           // 从服务获取正在运行的插件,不可用时 panic。
	Lookup  generic.FuncPair1[service.Context, ADDIN_IFACE, bool] // 查询服务管理器当前持有的插件。
}

ServiceAddInInterfaceDefinition 封装服务插件接口的标识和访问操作。

func ServiceAddInInterface added in v0.3.66

func ServiceAddInInterface[ADDIN_IFACE any](name ...string) ServiceAddInInterfaceDefinition[ADDIN_IFACE]

ServiceAddInInterface 创建不绑定构造函数的服务插件接口定义。 它适合通过 service.Context 访问同类插件的不同实现。

Jump to

Keyboard shortcuts

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