summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go36
1 files changed, 34 insertions, 2 deletions
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)
}()