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/pkg/errors"
13
14
log "github.com/sirupsen/logrus"
@@ -286,8 +287,8 @@ func (b *Backend) subscribeGateway(gatewayID lorawan.EUI64) error {
286
287
"qos" : b .qos ,
287
288
}).Info ("integration/mqtt: subscribing to topic" )
288
289
289
- if token := b .conn .Subscribe (topic .String (), b .qos , b .handleCommand ); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
290
- return errors .Wrap (token . Error () , "subscribe topic error" )
290
+ if err := tokenWrapper ( b .conn .Subscribe (topic .String (), b .qos , b .handleCommand ), b .maxTokenWait ); err != nil {
291
+ return errors .Wrap (err , "subscribe topic error" )
291
292
}
292
293
293
294
log .WithFields (log.Fields {
@@ -307,8 +308,8 @@ func (b *Backend) unsubscribeGateway(gatewayID lorawan.EUI64) error {
307
308
"topic" : topic .String (),
308
309
}).Info ("integration/mqtt: unsubscribing from topic" )
309
310
310
- if token := b .conn .Unsubscribe (topic .String ()); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
311
- return errors .Wrap (token . Error () , "unsubscribe topic error" )
311
+ if err := tokenWrapper ( b .conn .Unsubscribe (topic .String ()), b .maxTokenWait ); err != nil {
312
+ return errors .Wrap (err , "unsubscribe topic error" )
312
313
}
313
314
314
315
log .WithFields (log.Fields {
@@ -365,8 +366,8 @@ func (b *Backend) PublishState(gatewayID lorawan.EUI64, state string, v proto.Me
365
366
"state" : state ,
366
367
"gateway_id" : gatewayID ,
367
368
}).Info ("integration/mqtt: publishing state" )
368
- if token := b .conn .Publish (topic .String (), b .qos , b .stateRetained , bytes ); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
369
- return token . Error ()
369
+ if err := tokenWrapper ( b .conn .Publish (topic .String (), b .qos , b .stateRetained , bytes ), b .maxTokenWait ); err != nil {
370
+ return err
370
371
}
371
372
return nil
372
373
}
@@ -380,8 +381,8 @@ func (b *Backend) connect() error {
380
381
}
381
382
382
383
b .conn = paho .NewClient (b .clientOpts )
383
- if token := b .conn .Connect (); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
384
- return token . Error ()
384
+ if err := tokenWrapper ( b .conn .Connect (), b .maxTokenWait ); err != nil {
385
+ return err
385
386
}
386
387
387
388
return nil
@@ -661,8 +662,8 @@ func (b *Backend) publishEvent(gatewayID lorawan.EUI64, event string, fields log
661
662
fields ["event" ] = event
662
663
663
664
log .WithFields (fields ).Info ("integration/mqtt: publishing event" )
664
- if token := b .conn .Publish (topic .String (), b .qos , false , bytes ); token . WaitTimeout ( b .maxTokenWait ) && token . Error () != nil {
665
- return token . Error ()
665
+ if err := tokenWrapper ( b .conn .Publish (topic .String (), b .qos , false , bytes ), b .maxTokenWait ); err != nil {
666
+ return err
666
667
}
667
668
return nil
668
669
}
@@ -673,3 +674,10 @@ func (b *Backend) isClosed() bool {
673
674
defer b .connMux .RUnlock ()
674
675
return b .connClosed
675
676
}
677
+
678
+ func tokenWrapper (token mqtt.Token , timeout time.Duration ) error {
679
+ if ! token .WaitTimeout (timeout ) {
680
+ return errors .New ("token wait timeout error" )
681
+ }
682
+ return token .Error ()
683
+ }
0 commit comments