natsbot

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

commit 59f62ae314ddabd84a2dbf8f794e3601846e67b7
parent 34de7171fea1161f70239e9e1bf5b4dc3eb15720
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Tue, 16 Sep 2025 18:45:29 +0000

State cleaning
Diffstat:
Mnatsbot.go | 18++++++++++++++++++
1 file changed, 18 insertions(+), 0 deletions(-)

diff --git a/natsbot.go b/natsbot.go @@ -110,6 +110,7 @@ func Loop(cb NatsBot, mainScript string, capacity int) { } } + stateClean(L) log.Println("natsbot finished") } @@ -202,6 +203,23 @@ func registerState(L *lua.LState, evtChan chan *internalEvent, msgChan chan *nat stateSet(L, st) } +func stateClean(L *lua.LState) { + _, connIdx := stateConnTable(L) + + st := stateGet(L) + L.RawSetInt(st, keyConnTable, newConnTbl(L)) + L.RawSetInt(st, keySubsTable, newSubsTbl(L)) + + for nc := range connIdx { + nc.SetClosedHandler(nil) + nc.SetDisconnectErrHandler(nil) + nc.SetDiscoveredServersHandler(nil) + nc.SetErrorHandler(nil) + nc.SetReconnectHandler(nil) + nc.Close() + } +} + func stateUncheckedGet(L *lua.LState) *lua.LTable { v := L.GetField(L.Get(lua.RegistryIndex), luaStateName) if result, ok := v.(*lua.LTable); ok {