8
8
"text/template"
9
9
"time"
10
10
11
+ mqtt "github.com/eclipse/paho.mqtt.golang"
11
12
paho "github.com/eclipse/paho.mqtt.golang"
12
13
"github.com/gofrs/uuid"
13
14
"github.com/golang/protobuf/jsonpb"
@@ -290,8 +291,8 @@ func (b *Backend) subscribeGateway(gatewayID lorawan.EUI64) error {
290
291
"qos" : b .qos ,
291
292
}).Info ("integration/mqtt: subscribing to topic" )
292
293
293
- if token := b .conn .Subscribe (topic .String (), b .qos , b .handleCommand ); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
294
- return errors .Wrap (token . Error () , "subscribe topic error" )
294
+ if err := tokenWrapper ( b .conn .Subscribe (topic .String (), b .qos , b .handleCommand ), b .maxTokenWait ); err != nil {
295
+ return errors .Wrap (err , "subscribe topic error" )
295
296
}
296
297
297
298
log .WithFields (log.Fields {
@@ -311,8 +312,8 @@ func (b *Backend) unsubscribeGateway(gatewayID lorawan.EUI64) error {
311
312
"topic" : topic .String (),
312
313
}).Info ("integration/mqtt: unsubscribing from topic" )
313
314
314
- if token := b .conn .Unsubscribe (topic .String ()); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
315
- return errors .Wrap (token . Error () , "unsubscribe topic error" )
315
+ if err := tokenWrapper ( b .conn .Unsubscribe (topic .String ()), b .maxTokenWait ); err != nil {
316
+ return errors .Wrap (err , "unsubscribe topic error" )
316
317
}
317
318
318
319
log .WithFields (log.Fields {
@@ -368,8 +369,8 @@ func (b *Backend) PublishState(gatewayID lorawan.EUI64, state string, v proto.Me
368
369
"state" : state ,
369
370
"gateway_id" : gatewayID ,
370
371
}).Info ("integration/mqtt: publishing state" )
371
- if token := b .conn .Publish (topic .String (), b .qos , b .stateRetained , bytes ); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
372
- return token . Error ()
372
+ if err := tokenWrapper ( b .conn .Publish (topic .String (), b .qos , b .stateRetained , bytes ), b .maxTokenWait ); err != nil {
373
+ return err
373
374
}
374
375
return nil
375
376
}
@@ -383,8 +384,8 @@ func (b *Backend) connect() error {
383
384
}
384
385
385
386
b .conn = paho .NewClient (b .clientOpts )
386
- if token := b .conn .Connect (); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
387
- return token . Error ()
387
+ if err := tokenWrapper ( b .conn .Connect (), b .maxTokenWait ); err != nil {
388
+ return err
388
389
}
389
390
390
391
return nil
@@ -676,8 +677,8 @@ func (b *Backend) publishEvent(gatewayID lorawan.EUI64, event string, fields log
676
677
fields ["event" ] = event
677
678
678
679
log .WithFields (fields ).Info ("integration/mqtt: publishing event" )
679
- if token := b .conn .Publish (topic .String (), b .qos , false , bytes ); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
680
- return token . Error ()
680
+ if err := tokenWrapper ( b .conn .Publish (topic .String (), b .qos , false , bytes ), b .maxTokenWait ); err != nil {
681
+ return err
681
682
}
682
683
return nil
683
684
}
@@ -688,3 +689,10 @@ func (b *Backend) isClosed() bool {
688
689
defer b .connMux .RUnlock ()
689
690
return b .connClosed
690
691
}
692
+
693
+ func tokenWrapper (token mqtt.Token , timeout time.Duration ) error {
694
+ if ! token .WaitTimeout (timeout ) {
695
+ return errors .New ("token wait timeout error" )
696
+ }
697
+ return token .Error ()
698
+ }
0 commit comments