Documentation
¶
Index ¶
- func MustRegisterSourceFactory(typ conf.Script_Source_Type, f SourceFactoryFunc)
- func NewAutoGrowScriptEnginePool(ctx context.Context, cfg *conf.Script) (*scriptEngine.AutoGrowEnginePool, error)
- func NewScriptEngine(ctx context.Context, cfg *conf.Script) (scriptEngine.Engine, error)
- func NewScriptEnginePool(ctx context.Context, cfg *conf.Script) (*scriptEngine.EnginePool, error)
- func RegisterSourceFactory(typ conf.Script_Source_Type, f SourceFactoryFunc) error
- func SetEmbedFSProvider(p EmbedFSProvider)
- func SetLogger(kratosLogger log.Logger)
- type EmbedFSProvider
- type KratosLogger
- func (l *KratosLogger) Debug(ctx context.Context, msg string, args ...any)
- func (l *KratosLogger) Error(ctx context.Context, msg string, args ...any)
- func (l *KratosLogger) Info(ctx context.Context, msg string, args ...any)
- func (l *KratosLogger) Warn(ctx context.Context, msg string, args ...any)
- func (l *KratosLogger) With(args ...any) scriptEngine.Logger
- type SourceFactoryFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MustRegisterSourceFactory ¶ added in v0.0.6
func MustRegisterSourceFactory(typ conf.Script_Source_Type, f SourceFactoryFunc)
MustRegisterSourceFactory 是 RegisterSourceFactory 的 panic 版本,用于 init() 中。
func NewAutoGrowScriptEnginePool ¶ added in v0.0.4
func NewAutoGrowScriptEnginePool(ctx context.Context, cfg *conf.Script) (*scriptEngine.AutoGrowEnginePool, error)
NewAutoGrowScriptEnginePool 创建自动扩容的脚本引擎池。
初始创建 initial 个实例,可按需扩容到 max 个。 每个实例都会执行完整的初始化流程。
返回 (nil, nil) 表示配置为 nil 或引擎未启用。
func NewScriptEngine ¶
NewScriptEngine 根据配置创建并初始化单个脚本引擎实例。
流程:
- 转换引擎类型,校验配置
- 检查 enabled 标志(未设置或为 true 时继续)
- 通过工厂创建引擎实例
- 调用 Init 初始化引擎
- 创建并绑定 Source(如果配置了)
- 预加载脚本(pre_load_scripts + entry)
- 启动热加载(如果配置了 hot_reload)
返回 (nil, nil) 表示配置为 nil 或引擎未启用。
func NewScriptEnginePool ¶ added in v0.0.4
func NewScriptEnginePool(ctx context.Context, cfg *conf.Script) (*scriptEngine.EnginePool, error)
NewScriptEnginePool 创建固定大小的脚本引擎池。
池中每个引擎实例都会执行与 NewScriptEngine 相同的初始化流程: Init → SetSource → PreLoad → HotReload。
注意:引擎池的 per-call 代理方法(如 RegisterFunction)只作用于被 Acquire 的单个实例。 如需池级别统一绑定,请在获取池后手动遍历 Acquire/Release。
返回 (nil, nil) 表示配置为 nil 或引擎未启用。
func RegisterSourceFactory ¶ added in v0.0.6
func RegisterSourceFactory(typ conf.Script_Source_Type, f SourceFactoryFunc) error
RegisterSourceFactory 注册自定义 Source 创建工厂。 如果 typ 对应的工厂已存在,返回错误。
用于扩展来源类型(S3、etcd、Consul、Redis、HTTP、Git、Database 等), 当 go-scripts 发布对应子包或用户自行实现时调用。
示例 —— 注册 etcd Source 工厂(go-scripts/source/etcd 发布后):
func init() {
_ = script_engine.RegisterSourceFactory(conf.Script_Source_ETCD,
func(cfg *conf.Script_Source) (source.Reader, error) {
opts := cfg.GetOptions()
endpoints := opts.GetFields()["endpoints"].GetListValue()
// ... 解析配置并创建 etcd source
return etcdSource.New(endpoints...)
})
}
func SetEmbedFSProvider ¶ added in v0.0.6
func SetEmbedFSProvider(p EmbedFSProvider)
SetEmbedFSProvider 注册全局 embed FS 提供者。 宿主程序应在初始化脚本引擎之前调用此函数。
示例:
//go:embed scripts/*
var embedFS embed.FS
script_engine.SetEmbedFSProvider(func() (map[string]string, error) {
// 返回 prefix -> 脚本内容的映射
})
Types ¶
type EmbedFSProvider ¶ added in v0.0.6
EmbedFSProvider 是用于提供 go:embed fs.FS 的回调函数类型。 由于 embed.FS 无法通过 protobuf 配置传递,需要宿主程序在代码中注册。
type KratosLogger ¶ added in v0.0.6
KratosLogger 将 Kratos log.Logger 适配为 go-scripts Logger 接口。
使得 go-scripts 内部日志(引擎初始化、脚本执行、热更新等)能够 无缝接入 Kratos 统一日志体系。
使用方式:
import "github.com/go-kratos/kratos/v2/log"
import scriptEngine "github.com/tx7do/go-scripts"
kratosLogger := log.NewStdLogger(os.Stdout)
scriptEngine.SetLogger(&script_engine.KratosLogger{Logger: kratosLogger})
func (*KratosLogger) Debug ¶ added in v0.0.6
func (l *KratosLogger) Debug(ctx context.Context, msg string, args ...any)
Debug 以 DEBUG 级别记录日志。
func (*KratosLogger) Error ¶ added in v0.0.6
func (l *KratosLogger) Error(ctx context.Context, msg string, args ...any)
Error 以 ERROR 级别记录日志。
func (*KratosLogger) Info ¶ added in v0.0.6
func (l *KratosLogger) Info(ctx context.Context, msg string, args ...any)
Info 以 INFO 级别记录日志。
func (*KratosLogger) Warn ¶ added in v0.0.6
func (l *KratosLogger) Warn(ctx context.Context, msg string, args ...any)
Warn 以 WARN 级别记录日志。
func (*KratosLogger) With ¶ added in v0.0.6
func (l *KratosLogger) With(args ...any) scriptEngine.Logger
With 返回附加了指定键值对的新 KratosLogger 实例。 常用于区分模块,例如 logger.With("module", "lua")。
type SourceFactoryFunc ¶ added in v0.0.6
type SourceFactoryFunc func(cfg *conf.Script_Source) (source.Reader, error)
SourceFactoryFunc 是自定义 Source 创建函数的签名。 cfg 参数是完整的 Source 配置(type + paths + strategy + options), 工厂实现应根据 options 中的特有配置创建对应的 source.Reader。
内置类型(FILE / MEMORY / EMBED / MULTI)由本包自动处理,无需注册。 扩展类型(S3 / ETCD / CONSUL / REDIS / HTTP / GIT / DATABASE)需要宿主程序注册。