From bee3327e0fe056ee8e8fee7942d5aa70607317c5 Mon Sep 17 00:00:00 2001 From: Benjamin Jemlich Date: Tue, 26 Apr 2011 01:30:30 +0800 Subject: [PATCH] Add a signal handler which freezes all servers --- grumble.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/grumble.go b/grumble.go index bc1e8f2..730df10 100644 --- a/grumble.go +++ b/grumble.go @@ -13,6 +13,7 @@ import ( "io" "io/ioutil" "os" + "os/signal" "log" "sqlite" "path/filepath" @@ -218,6 +219,23 @@ func main() { log.Panicf("Unable to freeze server: %v", err) } } + + case sig := <-signal.Incoming: + if sig != signal.SIGINT && sig != signal.SIGTERM { + continue + } + + for sid, s := range servers { + err := s.FreezeToFile(filepath.Join(*datadir, fmt.Sprintf("%v", sid))) + if err != nil { + log.Printf("Unable to freeze server %v: %s", sid, err.String()) + continue + } + + log.Printf("Server %v frozen", sid) + } + + return } } }