From 3b10bced81423eacca3794934a23c821cdbf1c4f Mon Sep 17 00:00:00 2001 From: Horus3 Date: Mon, 30 Mar 2015 19:19:34 +0200 Subject: Add gracefull shutdown. --- shutdown.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 shutdown.go (limited to 'shutdown.go') 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) + } +} -- cgit v1.2.3