Minor change, added a factory method for ClientTopicCouple built from Subscription

This commit is contained in:
andsel
2015-12-06 19:31:36 +01:00
parent 585bf7523e
commit 80569d5dfe
6 changed files with 43 additions and 36 deletions
@@ -18,6 +18,7 @@ package io.moquette.spi;
import io.moquette.proto.messages.AbstractMessage;
import io.moquette.spi.impl.subscriptions.Subscription;
import io.moquette.spi.impl.subscriptions.SubscriptionsStore;
import io.moquette.spi.ISessionsStore.ClientTopicCouple;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -99,7 +100,7 @@ public class ClientSession {
//send SUBACK with 0x80 for this topic filter
return false;
}
ISessionsStore.ClientTopicCouple matchingCouple = new ISessionsStore.ClientTopicCouple(this.clientID, newSubscription.getTopicFilter());
ClientTopicCouple matchingCouple = new ClientTopicCouple(this.clientID, newSubscription.getTopicFilter());
Subscription existingSub = m_sessionsStore.getSubscription(matchingCouple);
//update the selected subscriptions if not present or if has a greater qos
if (existingSub == null || existingSub.getRequestedQos().byteValue() < newSubscription.getRequestedQos().byteValue()) {
@@ -628,8 +628,7 @@ public class ProtocolProcessor {
}
private boolean subscribeSingleTopic(final Subscription newSubscription) {
final ClientTopicCouple couple = new ClientTopicCouple(newSubscription.getClientId(), newSubscription.getTopicFilter());
subscriptions.add(couple);
subscriptions.add(newSubscription.asClientTopicCouple());
//scans retained messages to be published to the new subscription
//TODO this is ugly, it does a linear scan on potential big dataset
@@ -17,6 +17,7 @@ package io.moquette.spi.impl.subscriptions;
import java.io.Serializable;
import io.moquette.proto.messages.AbstractMessage.QOSType;
import io.moquette.spi.ISessionsStore.ClientTopicCouple;
/**
* Maintain the information about which Topic a certain ClientID is subscribed
@@ -100,4 +101,8 @@ public class Subscription implements Serializable {
return null;
}
}
public ClientTopicCouple asClientTopicCouple() {
return new ClientTopicCouple(this.clientId, this.topicFilter);
}
}