diff --git a/parser/src/main/java/org/dna/mqtt/moquette/messaging/spi/impl/SubscriptionsStore.java b/parser/src/main/java/org/dna/mqtt/moquette/messaging/spi/impl/SubscriptionsStore.java index ad44d38d..d23872f1 100644 --- a/parser/src/main/java/org/dna/mqtt/moquette/messaging/spi/impl/SubscriptionsStore.java +++ b/parser/src/main/java/org/dna/mqtt/moquette/messaging/spi/impl/SubscriptionsStore.java @@ -137,6 +137,9 @@ public class SubscriptionsStore { } } + /** + * Deactivate all topic subscriptions for the given clientID. + * */ void disconnect(String clientID) { for (Subscription s : m_subscriptions) { if (s.clientId.equals(clientID)) { @@ -149,6 +152,23 @@ public class SubscriptionsStore { child.disconnect(clientID); } } + + /** + * Activate all topic subscriptions for the given clientID. + * */ + public void connect(String clientID) { + for (Subscription s : m_subscriptions) { + if (s.clientId.equals(clientID)) { + s.setActive(true); + } + } + + //go deep + for (TreeNode child : m_children) { + child.disconnect(clientID); + } + + } } protected static class Token { @@ -302,6 +322,11 @@ public class SubscriptionsStore { subscriptions.disconnect(clientID); } + public void connect(String clientID) { + LOG.debug("connect re-activating subscriptions for clientID " + clientID); + subscriptions.connect(clientID); + } + public List matches(String topic) { List tokens = new ArrayList(); try {