From b823c890f9b64009d12254c6f52def3c3e0178c3 Mon Sep 17 00:00:00 2001 From: tkarrass Date: Sat, 6 Feb 2016 04:43:57 +0100 Subject: [PATCH] clean exit on server abort --- cmd/client.go | 20 ++++++++++++++++++-- memo | 4 ++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/cmd/client.go b/cmd/client.go index 687b6f0..76e4cfd 100644 --- a/cmd/client.go +++ b/cmd/client.go @@ -6,7 +6,9 @@ import ( "log" "net" "os" + "os/signal" "strconv" + "syscall" "github.com/spf13/cobra" @@ -42,6 +44,11 @@ func render() { func runClient(cmd *cobra.Command, args []string) { data.InitNC() defer data.ExitNC() + + c := make(chan os.Signal) + signal.Notify(c, os.Interrupt, os.Kill) + signal.Notify(c, syscall.SIGTERM) + fmt.Println("running client ...") if len(args) < 1 { @@ -58,13 +65,22 @@ func runClient(cmd *cobra.Command, args []string) { register(con, id) go render() - for { + run := true + for run { + // block until sigkill: + select { + case <-c: + // funzt noch nicht: + run = false + default: + } var oFrame data.Frame // always use new decoder - reusing may lead to errors gd := gob.NewDecoder(con) err = gd.Decode(&oFrame) if err != nil { - log.Fatal("RGS:", err) + log.Println("RGS:", err) + run = false } renderQueue <- oFrame } diff --git a/memo b/memo index e69de29..22f8763 100644 --- a/memo +++ b/memo @@ -0,0 +1,4 @@ +lvlfile + +layer ..n +