natsbot

NATS bot
git clone https://git.instinctive.eu/natsbot.git
Log | Files | Refs | README | LICENSE

commit 34de7171fea1161f70239e9e1bf5b4dc3eb15720
parent b8f944fd3e2b4ecd0333b3ec8385841f996af9ca
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Mon, 15 Sep 2025 18:07:14 +0000

Creation of index maps is factored
Diffstat:
Mnatsbot.go | 26++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/natsbot.go b/natsbot.go @@ -191,21 +191,13 @@ const ( keyTimerTable ) -type subsMap map[*nats.Subscription]int - func registerState(L *lua.LState, evtChan chan *internalEvent, msgChan chan *nats.Msg) { - conns := L.NewTable() - L.RawSetInt(conns, 1, newUserData(L, make(connMap))) - - subs := L.NewTable() - L.RawSetInt(subs, 1, newUserData(L, make(subsMap))) - st := L.NewTable() L.RawSetInt(st, keyEvtChan, newUserData(L, evtChan)) L.RawSetInt(st, keyMsgChan, newUserData(L, msgChan)) L.RawSetInt(st, keyCfgMap, newUserData(L, make(natsConfigMap))) - L.RawSetInt(st, keyConnTable, conns) - L.RawSetInt(st, keySubsTable, subs) + L.RawSetInt(st, keyConnTable, newConnTbl(L)) + L.RawSetInt(st, keySubsTable, newSubsTbl(L)) L.RawSetInt(st, keyTimerTable, L.NewTable()) stateSet(L, st) } @@ -428,6 +420,12 @@ func registerConnType(L *lua.LState) { L.SetGlobal(luaNatsConnTypeName, L.NewFunction(natsConnect)) } +func newConnTbl(L *lua.LState) lua.LValue { + connTbl := L.NewTable() + L.RawSetInt(connTbl, keyIndex, newUserData(L, make(connMap))) + return connTbl +} + func natsConnect(L *lua.LState) int { pcfg, cbmap, err := connConfig(L) if err != nil { @@ -595,6 +593,14 @@ type natsSubs struct { subs *nats.Subscription } +type subsMap map[*nats.Subscription]int + +func newSubsTbl(L *lua.LState) lua.LValue { + subsTbl := L.NewTable() + L.RawSetInt(subsTbl, keyIndex, newUserData(L, make(subsMap))) + return subsTbl +} + func wrapSubs(L *lua.LState, fn lua.LValue, ns *nats.Subscription, nc *nats.Conn) lua.LValue { tbl, subsIdx := stateSubsTable(L) id := tbl.Len() + 1