From 8328e4d78455eaa3627455469c7517f6805c6da3 Mon Sep 17 00:00:00 2001 From: unwox Date: Thu, 30 Oct 2025 17:22:26 +0600 Subject: add luna.restart function --- main.go | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 33d1cee..5d9b66b 100644 --- a/main.go +++ b/main.go @@ -613,6 +613,34 @@ func main() { module["fs"] = fsModule module["image"] = imageModule module["crypto"] = cryptoModule + module["restart"] = func (l *Lua) int { + running := false + l.deferred = func () { + if running { + return + } + for i, wrk := range wrks { + if wrk.HasSameLua(l) == false { + continue + } + running = true + start := time.Now() + err := wrk.Restart() + if err != nil { + log.Printf("error restarting:\n%s\n", err.Error()) + return + } + log.Printf( + "worker %d restarted in %s\n", + i, + time.Now().Sub(start), + ) + go wrk.Listen(msgs) + } + } + + return luaOk(l, nil) + } module["on-eval"] = func (l *Lua) int { var evalFn LuaRef err := l.Scan(&evalFn) @@ -638,12 +666,16 @@ func main() { wrk := NewWorker() wrks = append(wrks, wrk) go func () { + start := time.Now() err := wrk.Start(luaArgv, module) if err != nil { log.Fatal(err) } - wrks = append(wrks, wrk) - log.Printf("worker %d started\n", i) + log.Printf( + "worker %d started in %s\n", + i, + time.Now().Sub(start), + ) wg.Add(-1) wrk.Listen(msgs) }() -- cgit v1.2.3