diff options
| author | Horus3 | 2015-03-30 19:19:34 +0200 |
|---|---|---|
| committer | Horus3 | 2015-03-30 19:19:34 +0200 |
| commit | 3b10bced81423eacca3794934a23c821cdbf1c4f (patch) | |
| tree | 7baee17b918d4e1c1b368a59fc7b594cf07aa5c9 | |
| parent | 9bb67e86806b38a5ecf98f9844048c675ef14d40 (diff) | |
| download | web2irc-3b10bced81423eacca3794934a23c821cdbf1c4f.tar.gz | |
Add gracefull shutdown.
| -rw-r--r-- | main.go | 1 | ||||
| -rw-r--r-- | shutdown.go | 28 |
2 files changed, 29 insertions, 0 deletions
@@ -34,6 +34,7 @@ func main() { ip := os.Getenv("WEB2IRC_HTTP_IP") port := os.Getenv("WEB2IRC_HTTP_PORT") + go Shutdown() log.Println("Listening on " + ip + ":" + port) http.ListenAndServe(ip+":"+port, nil) } diff --git a/shutdown.go b/shutdown.go new file mode 100644 index 0000000..7147bdc --- /dev/null +++ b/shutdown.go @@ -0,0 +1,28 @@ +package main + +import ( + "log" + "os" + "os/signal" + "syscall" + "time" +) + +var ( + Signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT} +) + +func Shutdown() { + ch := make(chan os.Signal, 0) + signal.Notify(ch, Signals...) + + s := <-ch + if s != nil { + log.Printf("Received signal '%s'.", s) + con.Quit() + log.Print("Terminating in 5 seconds.") + time.Sleep(time.Second * 5) + log.Printf("Terminating because of signal '%s'", s) + os.Exit(0) + } +} |
