@@ -710,21 +710,10 @@ public void deliveryComplete(IMqttDeliveryToken messageToken) {
710
710
711
711
service .traceDebug (TAG , "deliveryComplete(" + messageToken + ")" );
712
712
713
- MqttMessage message = savedSentMessages .remove (messageToken );
714
- if (message != null ) { // If I don't know about the message, it's
715
- // irrelevant
716
- String topic = savedTopics .remove (messageToken );
717
- String activityToken = savedActivityTokens .remove (messageToken );
718
- String invocationContext = savedInvocationContexts .remove (messageToken );
719
-
720
- Bundle resultBundle = messageToBundle (null , topic , message );
721
- if (activityToken != null ) {
722
- resultBundle .putString (MqttServiceConstants .CALLBACK_ACTION , MqttServiceConstants .SEND_ACTION );
723
- resultBundle .putString (MqttServiceConstants .CALLBACK_ACTIVITY_TOKEN , activityToken );
724
- resultBundle .putString (MqttServiceConstants .CALLBACK_INVOCATION_CONTEXT , invocationContext );
725
-
713
+ Bundle resultBundle = popSendDetails (messageToken );
714
+ if (resultBundle != null ) {
715
+ if (MqttServiceConstants .SEND_ACTION .equals (resultBundle .getString (MqttServiceConstants .CALLBACK_ACTION )))
726
716
service .callbackToActivity (clientHandle , Status .OK , resultBundle );
727
- }
728
717
resultBundle .putString (MqttServiceConstants .CALLBACK_ACTION , MqttServiceConstants .MESSAGE_DELIVERED_ACTION );
729
718
service .callbackToActivity (clientHandle , Status .OK , resultBundle );
730
719
}
@@ -751,6 +740,29 @@ public void messageArrived(String topic, MqttMessage message) throws Exception {
751
740
service .callbackToActivity (clientHandle , Status .OK , resultBundle );
752
741
}
753
742
743
+ /**
744
+ * Removed store details of sent messages in "deliveryComplete"
745
+ * callbacks from the mqttClient
746
+ */
747
+ private synchronized Bundle popSendDetails (final IMqttDeliveryToken messageToken ) {
748
+ MqttMessage message = savedSentMessages .remove (messageToken );
749
+ if (message != null ) { // If I don't know about the message, it's
750
+ // irrelevant
751
+ String topic = savedTopics .remove (messageToken );
752
+ String activityToken = savedActivityTokens .remove (messageToken );
753
+ String invocationContext = savedInvocationContexts .remove (messageToken );
754
+
755
+ Bundle resultBundle = messageToBundle (null , topic , message );
756
+ if (activityToken != null ) {
757
+ resultBundle .putString (MqttServiceConstants .CALLBACK_ACTION , MqttServiceConstants .SEND_ACTION );
758
+ resultBundle .putString (MqttServiceConstants .CALLBACK_ACTIVITY_TOKEN , activityToken );
759
+ resultBundle .putString (MqttServiceConstants .CALLBACK_INVOCATION_CONTEXT , invocationContext );
760
+ }
761
+ return resultBundle ;
762
+ }
763
+ return null ;
764
+ }
765
+
754
766
/**
755
767
* Store details of sent messages so we can handle "deliveryComplete"
756
768
* callbacks from the mqttClient
@@ -761,7 +773,7 @@ public void messageArrived(String topic, MqttMessage message) throws Exception {
761
773
* @param invocationContext
762
774
* @param activityToken
763
775
*/
764
- private void storeSendDetails (final String topic , final MqttMessage msg , final IMqttDeliveryToken messageToken ,
776
+ private synchronized void storeSendDetails (final String topic , final MqttMessage msg , final IMqttDeliveryToken messageToken ,
765
777
final String invocationContext , final String activityToken ) {
766
778
savedTopics .put (messageToken , topic );
767
779
savedSentMessages .put (messageToken , msg );
@@ -920,6 +932,10 @@ public void deleteBufferedMessage(int bufferIndex) {
920
932
myClient .deleteBufferedMessage (bufferIndex );
921
933
}
922
934
935
+ public int getInFlightMessageCount () {
936
+ return myClient .getInFlightMessageCount ();
937
+ }
938
+
923
939
/**
924
940
* General-purpose IMqttActionListener for the Client context
925
941
* <p>
0 commit comments