commit 1f94ec5c6c74be77853ee77027367b80008368ce
parent 34d01919b74ac4ad99d0e8a8359fcc9cdbe4b416
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Fri, 29 Aug 2025 19:00:01 +0000
Dispatch of incoming messages to subscription callbacks
Diffstat:
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/natsbot.go b/natsbot.go
@@ -79,7 +79,18 @@ func Loop(cb NatsBot, mainScript string, capacity int) {
}
func processMsg(L *lua.LState, msg *nats.Msg) {
- // TODO
+ tbl := stateSubsTable(L)
+ id := L.RawGetInt(tbl, 1).(*lua.LUserData).Value.(subsMap)[msg.Sub]
+ log.Printf("Received message on %q, for sub %q, at id %d", msg.Subject, msg.Sub.Subject, id)
+ subs := L.RawGetInt(tbl, id)
+ fn := L.GetField(L.GetMetatable(subs), "__call")
+ err := L.CallByParam(lua.P{Fn: fn, NRet: 0, Protect: true},
+ subs,
+ lua.LString(msg.Subject),
+ lua.LString(string(msg.Data)))
+ if err != nil {
+ panic(err)
+ }
}
/********** State Object in the Lua Interpreter **********/