Skip to content

Commit 04c2fc1

Browse files
Make connections retry until success rather than fail and exit. Allows code to run in a "fire and forget" mode on the multitude of gateway devices this may run on.
1 parent 10664d9 commit 04c2fc1

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

cmd/lora-gateway-bridge/main.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package main
33
//go:generate ./doc.sh
44

55
import (
6+
"fmt"
67
"os"
78
"os/signal"
89
"syscall"
10+
"time"
911

1012
log "github.com/Sirupsen/logrus"
1113
"github.com/brocaar/lora-gateway-bridge/backend/mqttpubsub"
@@ -24,9 +26,13 @@ func run(c *cli.Context) error {
2426
"docs": "https://docs.loraserver.io/lora-gateway-bridge/",
2527
}).Info("starting LoRa Gateway Bridge")
2628

27-
pubsub, err := mqttpubsub.NewBackend(c.String("mqtt-server"), c.String("mqtt-username"), c.String("mqtt-password"))
28-
if err != nil {
29-
log.Fatalf("could not setup mqtt backend: %s", err)
29+
var pubsub *mqttpubsub.Backend
30+
for err := fmt.Errorf( "Fake Error" ); nil != err; {
31+
pubsub, err = mqttpubsub.NewBackend(c.String("mqtt-server"), c.String("mqtt-username"), c.String("mqtt-password"))
32+
if err != nil {
33+
log.Errorf("could not setup mqtt backend, retry in 2 seconds: %s", err)
34+
time.Sleep( 2 * time.Second )
35+
}
3036
}
3137
defer pubsub.Close()
3238

@@ -38,9 +44,13 @@ func run(c *cli.Context) error {
3844
return pubsub.UnSubscribeGatewayTX(mac)
3945
}
4046

41-
gw, err := gateway.NewBackend(c.String("udp-bind"), onNew, onDelete, c.Bool("skip-crc-check"))
42-
if err != nil {
43-
log.Fatalf("could not setup gateway backend: %s", err)
47+
var gw *gateway.Backend
48+
for err := fmt.Errorf( "Fake Error" ); nil != err; {
49+
gw, err = gateway.NewBackend(c.String("udp-bind"), onNew, onDelete, c.Bool("skip-crc-check"))
50+
if err != nil {
51+
log.Errorf("could not setup gateway backend, retry in 2 seconds: %s", err)
52+
time.Sleep( 2 * time.Second )
53+
}
4454
}
4555
defer gw.Close()
4656

gateway/backend.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
128128
b.wg.Add(1)
129129
err := b.readPackets()
130130
if !b.closed {
131-
log.Fatal(err)
131+
log.Error(err)
132132
}
133133
b.wg.Done()
134134
}()
@@ -137,7 +137,7 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
137137
b.wg.Add(1)
138138
err := b.sendPackets()
139139
if !b.closed {
140-
log.Fatal(err)
140+
log.Error(err)
141141
}
142142
b.wg.Done()
143143
}()

0 commit comments

Comments
 (0)