Skip to content

Commit 1af0487

Browse files
author
Ian Craggs
committed
Merge branch 'hylkevds-develop' into develop
2 parents d75a46f + eb892ee commit 1af0487

3 files changed

Lines changed: 40 additions & 5 deletions

File tree

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/ClientState.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,8 @@ public void send(MqttWireMessage message, MqttToken token) throws MqttException
507507
message.setMessageId(getNextMessageId());
508508
}
509509
}
510-
if (token != null ) {
510+
if (token != null) {
511+
message.setToken(token);
511512
try {
512513
token.internalTok.setMessageID(message.getMessageId());
513514
} catch (Exception e) {
@@ -531,13 +532,14 @@ public void send(MqttWireMessage message, MqttToken token) throws MqttException
531532
case 2:
532533
outboundQoS2.put( Integer.valueOf(message.getMessageId()), message);
533534
persistence.put(getSendPersistenceKey(message), (MqttPublish) message);
535+
tokenStore.saveToken(token, message);
534536
break;
535537
case 1:
536538
outboundQoS1.put( Integer.valueOf(message.getMessageId()), message);
537539
persistence.put(getSendPersistenceKey(message), (MqttPublish) message);
540+
tokenStore.saveToken(token, message);
538541
break;
539542
}
540-
tokenStore.saveToken(token, message);
541543
pendingMessages.addElement(message);
542544
queueLock.notifyAll();
543545
}
@@ -906,8 +908,11 @@ protected void notifySent(MqttWireMessage message) {
906908
//@TRACE 625=key={0}
907909
log.fine(CLASS_NAME,methodName,"625",new Object[]{message.getKey()});
908910

909-
MqttToken token = tokenStore.getToken(message);
910-
if (token == null) return;
911+
MqttToken token = message.getToken();
912+
if (token == null) {
913+
token = tokenStore.getToken(message);
914+
if (token == null) return;
915+
}
911916
token.internalTok.notifySent();
912917
if (message instanceof MqttPingReq) {
913918
synchronized (pingOutstandingLock) {

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/CommsSender.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,10 @@ public void run() {
134134
out.write(message);
135135
out.flush();
136136
} else {
137-
MqttToken token = tokenStore.getToken(message);
137+
MqttToken token = message.getToken();
138+
if (token == null) {
139+
tokenStore.getToken(message);
140+
}
138141
// While quiescing the tokenstore can be cleared so need
139142
// to check for null for the case where clear occurs
140143
// while trying to send a message.

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/wire/MqttWireMessage.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.eclipse.paho.client.mqttv3.MqttException;
2929
import org.eclipse.paho.client.mqttv3.MqttPersistable;
30+
import org.eclipse.paho.client.mqttv3.MqttToken;
3031
import org.eclipse.paho.client.mqttv3.internal.ExceptionHelper;
3132

3233
/**
@@ -65,6 +66,14 @@ public abstract class MqttWireMessage {
6566

6667
protected boolean duplicate = false;
6768

69+
/**
70+
* The token associated with the message. It needs to be stored here,
71+
* because QoS 0 messages do not have an ID, and tokens for these messages
72+
* can thus not be stored in the Token Store.
73+
*/
74+
private MqttToken token;
75+
76+
6877
public MqttWireMessage(byte type) {
6978
this.type = type;
7079
// Use zero as the default message ID. Can't use -1, as that is serialized
@@ -409,6 +418,24 @@ public static void validateVariableByteInt(int value) throws IllegalArgumentExce
409418

410419
}
411420

421+
/**
422+
* Get the token associated with the message.
423+
*
424+
* @return The token associated with the message.
425+
*/
426+
public MqttToken getToken() {
427+
return token;
428+
}
429+
430+
/**
431+
* Set the token associated with the message.
432+
*
433+
* @param token the token associated with the message.
434+
*/
435+
public void setToken(MqttToken token) {
436+
this.token = token;
437+
}
438+
412439
public String toString() {
413440
return PACKET_NAMES[type];
414441
}

0 commit comments

Comments
 (0)