diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 36 |
1 files changed, 34 insertions, 2 deletions
@@ -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) }() |
