Skip to content

Commit 7088ae9

Browse files
Matt Pavlovichjpwsutton
authored andcommitted
* [4999935] Add optional flag to forcibly disconnect without sending the disconnect packet to trigger LW message. (#246)
ref: https://bugs.eclipse.org/bugs/show_bug.cgi?id=499935 Signed-off-by: Matt Pavlovich <mattrpav@gmail.com>
1 parent a00da41 commit 7088ae9

3 files changed

Lines changed: 19 additions & 5 deletions

File tree

org.eclipse.paho.client.mqttv3/src/main/java-templates/org/eclipse/paho/client/mqttv3/internal/ClientComms.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -471,20 +471,26 @@ public void disconnect(MqttDisconnect disconnect, long quiesceTimeout, MqttToken
471471
discbg.start();
472472
}
473473
}
474-
474+
475+
public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout) throws MqttException {
476+
disconnectForcibly(quiesceTimeout, disconnectTimeout, true);
477+
}
478+
475479
/**
476480
* Disconnect the connection and reset all the states.
477481
*/
478-
public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout) throws MqttException {
482+
public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout, boolean sendDisconnectPacket) throws MqttException {
479483
// Allow current inbound and outbound work to complete
480484
clientState.quiesce(quiesceTimeout);
481485
MqttToken token = new MqttToken(client.getClientId());
482486
try {
483487
// Send disconnect packet
484-
internalSend(new MqttDisconnect(), token);
488+
if(sendDisconnectPacket) {
489+
internalSend(new MqttDisconnect(), token);
485490

486-
// Wait util the disconnect packet sent with timeout
487-
token.waitForCompletion(disconnectTimeout);
491+
// Wait util the disconnect packet sent with timeout
492+
token.waitForCompletion(disconnectTimeout);
493+
}
488494
}
489495
catch (Exception ex) {
490496
// ignore, probably means we failed to send the disconnect packet.

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/MqttAsyncClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,10 @@ public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout) thro
649649
comms.disconnectForcibly(quiesceTimeout, disconnectTimeout);
650650
}
651651

652+
public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout, boolean sendDisconnectPacket) throws MqttException {
653+
comms.disconnectForcibly(quiesceTimeout, disconnectTimeout, sendDisconnectPacket);
654+
}
655+
652656
/* (non-Javadoc)
653657
* @see IMqttAsyncClient#isConnected()
654658
*/

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/MqttClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,10 @@ public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout) thro
290290
aClient.disconnectForcibly(quiesceTimeout, disconnectTimeout);
291291
}
292292

293+
public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout, boolean sendDisconnectPacket) throws MqttException {
294+
aClient.disconnectForcibly(quiesceTimeout, disconnectTimeout, sendDisconnectPacket);
295+
}
296+
293297
/*
294298
* @see IMqttClient#subscribe(String)
295299
*/

0 commit comments

Comments
 (0)