From 06103a3264d7bc81e5a71406c1378d28f7c00d34 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 20 Aug 2025 10:10:52 +0300 Subject: [PATCH] add lua engine skeleton --- internal/engine/lua/handler.go | 1 + internal/engine/lua/pool.go | 35 ++++++++++++++++++++++++++++++++++ internal/engine/lua/types.go | 26 +++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 internal/engine/lua/handler.go create mode 100644 internal/engine/lua/pool.go create mode 100644 internal/engine/lua/types.go diff --git a/internal/engine/lua/handler.go b/internal/engine/lua/handler.go new file mode 100644 index 0000000..07534cc --- /dev/null +++ b/internal/engine/lua/handler.go @@ -0,0 +1 @@ +package lua diff --git a/internal/engine/lua/pool.go b/internal/engine/lua/pool.go new file mode 100644 index 0000000..d1e009d --- /dev/null +++ b/internal/engine/lua/pool.go @@ -0,0 +1,35 @@ +package lua + +import ( + "sync" + + lua "github.com/yuin/gopher-lua" +) + +type LuaPool struct { + pool sync.Pool +} + +func NewLuaPool() *LuaPool { + return &LuaPool{ + pool: sync.Pool{ + New: func() any { + L := lua.NewState() + + return L + }, + }, + } +} + +func (lp *LuaPool) Get() *lua.LState { + return lp.pool.Get().(*lua.LState) +} + +func (lp *LuaPool) Put(L *lua.LState) { + L.Close() + + newL := lua.NewState() + + lp.pool.Put(newL) +} diff --git a/internal/engine/lua/types.go b/internal/engine/lua/types.go new file mode 100644 index 0000000..72504e2 --- /dev/null +++ b/internal/engine/lua/types.go @@ -0,0 +1,26 @@ +package lua + +import ( + "net/http" + + "github.com/akyaiy/GoSally-mvp/internal/core/corestate" + "github.com/akyaiy/GoSally-mvp/internal/engine/app" + "github.com/akyaiy/GoSally-mvp/internal/server/rpc" +) + +type LuaEngineDeps struct { + HttpRequest *http.Request + JSONRPCRequest *rpc.RPCRequest + SessionUUID string + ScriptPath string +} + +type LuaEngineContract interface { + Handle(deps *LuaEngineDeps) *rpc.RPCResponse + +} + +type LuaEngine struct { + x *app.AppX + cs *corestate.CoreState +}