commit 9bf547b547a69daa7fbf9a2649853b3ba863933d
parent fef175d112af373859834f9a107d65f7afe92f04
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Thu, 11 Sep 2025 21:35:25 +0000
Callbacks for internal events are dispatched
Diffstat:
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/natsbot.go b/natsbot.go
@@ -114,7 +114,35 @@ func Loop(cb NatsBot, mainScript string, capacity int) {
}
func processEvt(L *lua.LState, evt *internalEvent) {
- // TODO
+ tbl, idx := stateConnTable(L)
+ connLua := L.RawGetInt(tbl, idx[evt.nc])
+ fn := L.GetField(L.GetField(L.GetMetatable(connLua), "__index").(*lua.LTable), evt.name)
+ if lua.LVIsFalse(fn) {
+ return
+ }
+
+ var subLua lua.LValue
+ if evt.subs == nil {
+ subLua = lua.LNil
+ } else {
+ tbl, idx := stateSubsTable(L)
+ subLua = L.RawGetInt(tbl, idx[evt.subs])
+ }
+
+ var errLua lua.LValue
+ if evt.err == nil {
+ errLua = lua.LNil
+ } else {
+ errLua = lua.LString(evt.err.Error())
+ }
+
+ err := L.CallByParam(lua.P{Fn: fn, NRet: 0, Protect: true},
+ connLua,
+ subLua,
+ errLua)
+ if err != nil {
+ panic(err)
+ }
}
func processMsg(L *lua.LState, msg *nats.Msg) {