Added stopping for subscriptions handlers and for unsubscription handlers

This commit is contained in:
zbeacon 2021-11-08 13:25:03 +02:00 committed by Andrew Shvayka
parent e7c4e76851
commit 06f199b936
4 changed files with 14 additions and 4 deletions

View File

@ -156,9 +156,11 @@ final class MqttClientImpl implements MqttClient {
if (callback != null) {
callback.connectionLost(e);
}
pendingSubscriptions.forEach((id, mqttPendingSubscription) -> mqttPendingSubscription.onChannelClosed());
pendingSubscriptions.clear();
serverSubscriptions.clear();
subscriptions.clear();
pendingServerUnsubscribes.forEach((id, mqttPendingServerUnsubscribes) -> mqttPendingServerUnsubscribes.onChannelClosed());
pendingServerUnsubscribes.clear();
qos2PendingIncomingPublishes.clear();
pendingPublishes.forEach((id, mqttPendingPublish) -> mqttPendingPublish.onChannelClosed());

View File

@ -24,7 +24,7 @@ import io.netty.util.concurrent.Promise;
import java.util.function.Consumer;
final class MqttPendingPublish {
final class MqttPendingPublish{
private final int messageId;
private final Promise<Void> future;
@ -99,7 +99,7 @@ final class MqttPendingPublish {
this.pubrelRetransmissionHandler.stop();
}
void onChannelClosed() {
void onChannelClosed(){
this.publishRetransmissionHandler.stop();
this.pubrelRetransmissionHandler.stop();
}

View File

@ -23,7 +23,7 @@ import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;
final class MqttPendingSubscription {
final class MqttPendingSubscription{
private final Promise<Void> future;
private final String topic;
@ -99,4 +99,8 @@ final class MqttPendingSubscription {
return once;
}
}
void onChannelClosed(){
this.retransmissionHandler.stop();
}
}

View File

@ -21,7 +21,7 @@ import io.netty.util.concurrent.Promise;
import java.util.function.Consumer;
final class MqttPendingUnsubscription {
final class MqttPendingUnsubscription{
private final Promise<Void> future;
private final String topic;
@ -52,4 +52,8 @@ final class MqttPendingUnsubscription {
void onUnsubackReceived(){
this.retransmissionHandler.stop();
}
void onChannelClosed(){
this.retransmissionHandler.stop();
}
}