Add termination handler

This commit is contained in:
Felix Niederwanger 2023-05-30 22:01:49 +02:00
parent fffb445b72
commit cd8b6da112
Signed by: phoenix
GPG key ID: 6E77A590E3F6D71C

View file

@ -3,6 +3,8 @@ package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
@ -10,7 +12,7 @@ var mqtt_c Mqtt
func establishMqtt() error {
var err error
n := 5
n := 5 // Reconnection attempts
for i := 0; i < n; i++ {
mqtt_c, err = ConnectMqtt(cf.Mqtt, 1883)
@ -23,8 +25,18 @@ func establishMqtt() error {
return fmt.Errorf("connection failed")
}
func main() {
// awaits SIGINT or SIGTERM and quit program
func awaitTerminationSignal() {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
go func() {
sig := <-sigs
fmt.Println(sig)
os.Exit(1)
}()
}
func main() {
cf.SetDefaults()
if err := establishMqtt(); err != nil {
@ -32,7 +44,8 @@ func main() {
os.Exit(1)
}
fmt.Println("smartbridge reader operational")
awaitTerminationSignal()
fmt.Println("smartbridge SBWF3102 reader")
for true {
reading, err := ReadSmartbridge(cf.Remote)
if err != nil {