From 44891b1795bd7f87a80bc96ffaeffe8ce2417030 Mon Sep 17 00:00:00 2001 From: Hendrik van Wyk Date: Sat, 16 Sep 2017 14:03:04 +0200 Subject: [PATCH] Better cleanup code in invertercli. --- cmd/invertercli/invertercli.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/cmd/invertercli/invertercli.go b/cmd/invertercli/invertercli.go index f76117a..d57f479 100644 --- a/cmd/invertercli/invertercli.go +++ b/cmd/invertercli/invertercli.go @@ -8,6 +8,9 @@ import ( "io" "log" "net" + "os" + "os/signal" + "syscall" ) // Basic CLI to serve as example lib usage @@ -19,7 +22,7 @@ func main() { dev := flag.String("dev", "/dev/ttyUSB0", "TTY device to use.") flag.Parse() - var p io.ReadWriter + var p io.ReadWriteCloser var err error var tcpAddr *net.TCPAddr @@ -29,9 +32,9 @@ func main() { panic(err) } p, err = net.DialTCP("tcp", nil, tcpAddr) - bf := make([]byte, 256) - p.Read(bf) - + if err != nil { + panic(err) + } } else { options := serial.RawOptions options.BitRate = 2400 @@ -41,16 +44,24 @@ func main() { panic(err) } } + defer p.Close() mk2, err := mk2if.NewMk2Connection(p) defer mk2.Close() if err != nil { panic(err) } c := mk2.C() + sigterm := make(chan os.Signal, 1) + signal.Notify(sigterm, syscall.SIGTERM, os.Interrupt) +mainloop: for { - tmp := <-c - if tmp.Valid { - PrintInfo(tmp) + select { + case tmp := <-c: + if tmp.Valid { + PrintInfo(tmp) + } + case <-sigterm: + break mainloop } } log.Printf("Closing connection")