调整 Config、Server、APIMethod 结构体字段顺序以优化内存布局, 解决 govet fieldalignment 检查警告。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
30 lines
846 B
Go
30 lines
846 B
Go
// Package lua 提供 Lua API 注册辅助函数
|
|
package lua
|
|
|
|
import glua "github.com/yuin/gopher-lua"
|
|
|
|
// APIMethod 表示一个 Lua API 方法
|
|
type APIMethod struct {
|
|
Func func(*glua.LState) int
|
|
Name string
|
|
}
|
|
|
|
// RegisterAPIMethods 批量注册 API 方法到 Lua 表
|
|
func RegisterAPIMethods(L *glua.LState, tbl *glua.LTable, methods []APIMethod) {
|
|
for _, m := range methods {
|
|
tbl.RawSetString(m.Name, L.NewFunction(m.Func))
|
|
}
|
|
}
|
|
|
|
// RegisterUnsafeAPI 注册不可用于 timer context 的安全桩
|
|
func RegisterUnsafeAPI(L *glua.LState, ngx *glua.LTable, apiName string, methods []string) {
|
|
tbl := L.NewTable()
|
|
for _, m := range methods {
|
|
tbl.RawSetString(m, L.NewFunction(func(L *glua.LState) int {
|
|
L.RaiseError("API %s.%s not available in timer callback context", apiName, m)
|
|
return 0
|
|
}))
|
|
}
|
|
ngx.RawSetString(apiName, tbl)
|
|
}
|