Removed old 'map based queues' to use persistent BlockingQueues from MapDB
This commit is contained in:
@@ -16,19 +16,14 @@
|
||||
package io.moquette.spi;
|
||||
|
||||
import io.moquette.parser.proto.messages.AbstractMessage;
|
||||
import io.moquette.parser.proto.messages.PublishMessage;
|
||||
import io.moquette.server.Constants;
|
||||
import io.moquette.spi.ISessionsStore.ClientTopicCouple;
|
||||
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;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
|
||||
/**
|
||||
@@ -61,7 +56,7 @@ public class ClientSession {
|
||||
|
||||
private volatile boolean cleanSession;
|
||||
|
||||
private BlockingQueue<AbstractMessage> m_queueToPublish = new ArrayBlockingQueue<>(Constants.MAX_MESSAGE_QUEUE);
|
||||
// private BlockingQueue<AbstractMessage> m_queueToPublish = new ArrayBlockingQueue<>(Constants.MAX_MESSAGE_QUEUE);
|
||||
|
||||
public ClientSession(String clientID, IMessagesStore messagesStore, ISessionsStore sessionsStore,
|
||||
boolean cleanSession) {
|
||||
@@ -72,21 +67,14 @@ public class ClientSession {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the list of persisted publishes for the given clientID.
|
||||
* For QoS1 and QoS2 with clean session flag, this method return the list of
|
||||
* missed publish events while the client was disconnected.
|
||||
*
|
||||
* @return the list of messages to be delivered for client related to the session.
|
||||
* */
|
||||
public List<IMessagesStore.StoredMessage> storedMessages() {
|
||||
//read all messages from enqueued store
|
||||
Collection<MessageGUID> guids = this.m_sessionsStore.enqueued(clientID);
|
||||
return messagesStore.listMessagesInSession(guids);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the messages stored in a cleanSession false.
|
||||
*
|
||||
* @param guid the guid of the message to remove from the queue.
|
||||
*/
|
||||
public void removeEnqueued(MessageGUID guid) {
|
||||
this.m_sessionsStore.removeEnqueued(this.clientID, guid);
|
||||
public BlockingQueue<IMessagesStore.StoredMessage> queue() {
|
||||
return this.m_sessionsStore.queue(clientID);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -173,8 +161,12 @@ public class ClientSession {
|
||||
return messagesStore.getMessageByGuid(guid);
|
||||
}
|
||||
|
||||
public void enqueueToDeliver(MessageGUID guid) {
|
||||
this.m_sessionsStore.bindToDeliver(guid, this.clientID);
|
||||
/**
|
||||
* Enqueue a message to be sent to the client.
|
||||
* @param message the message to enqueue.
|
||||
* */
|
||||
public void enqueue(IMessagesStore.StoredMessage message) {
|
||||
this.m_sessionsStore.queue(this.clientID).add(message);
|
||||
}
|
||||
|
||||
public IMessagesStore.StoredMessage storedMessage(int messageID) {
|
||||
@@ -182,19 +174,6 @@ public class ClientSession {
|
||||
return messagesStore.getMessageByGuid(guid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue a message to be sent to the client.
|
||||
* @param pubMessage the message to enqueue.
|
||||
* @return false if the queue is full.
|
||||
* */
|
||||
public boolean enqueue(PublishMessage pubMessage) {
|
||||
return m_queueToPublish.offer(pubMessage);
|
||||
}
|
||||
|
||||
public AbstractMessage dequeue() {
|
||||
return m_queueToPublish.poll();
|
||||
}
|
||||
|
||||
public void moveInFlightToSecondPhaseAckWaiting(int messageID) {
|
||||
m_sessionsStore.moveInFlightToSecondPhaseAckWaiting(this.clientID, messageID);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user