@Override public synchronized void addSubscription(SubscriptionInfo info, boolean retroactive) throws IOException { SubscriptionKey key = new SubscriptionKey(info); MemoryTopicSub sub = new MemoryTopicSub(key); topicSubMap.put(key, sub); if (retroactive) { for (Map.Entry<MessageId, Message> entry : messageTable.entrySet()) { sub.addMessage(entry.getKey(), entry.getValue()); } } subscriberDatabase.put(key, info); }
@Override public synchronized void recoverNextMessages(String clientId, String subscriptionName, int maxReturned, MessageRecoveryListener listener) throws Exception { MemoryTopicSub sub = this.topicSubMap.get(new SubscriptionKey(clientId, subscriptionName)); if (sub != null) { sub.recoverNextMessages(maxReturned, listener); } }
@Override public synchronized void recoverSubscription(String clientId, String subscriptionName, MessageRecoveryListener listener) throws Exception { MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriptionName)); if (sub != null) { sub.recoverSubscription(listener); } }
@Override public void resetBatching(String clientId, String subscriptionName) { MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriptionName)); if (sub != null) { sub.resetBatching(); } }
@Override public synchronized int getMessageCount(String clientId, String subscriberName) throws IOException { int result = 0; MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriberName)); if (sub != null) { result = sub.size(); } return result; }
@Override public synchronized void addMessage(ConnectionContext context, Message message) throws IOException { super.addMessage(context, message); for (MemoryTopicSub sub : topicSubMap.values()) { sub.addMessage(message.getMessageId(), message); } }
@Override public synchronized void acknowledge(ConnectionContext context, String clientId, String subscriptionName, MessageId messageId, MessageAck ack) throws IOException { super.removeMessage(messageId); SubscriptionKey key = new SubscriptionKey(clientId, subscriptionName); MemoryTopicSub sub = topicSubMap.get(key); if (sub != null) { sub.removeMessage(messageId); } }
@Override public synchronized long getMessageSize(String clientId, String subscriberName) throws IOException { long result = 0; MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriberName)); if (sub != null) { result = sub.messageSize(); } return result; }
@Override public synchronized void deleteSubscription(String clientId, String subscriptionName) { SubscriptionKey key = new SubscriptionKey(clientId, subscriptionName); subscriberDatabase.remove(key); MemoryTopicSub subscription = topicSubMap.get(key); if (subscription != null) { List<Message> storedMessages = subscription.getStoredMessages(); for (Message message : storedMessages) { try { acknowledge(null, key.getClientId(), key.getSubscriptionName(), message.getMessageId(), null); } catch (IOException e) { } } } subscriberDatabase.remove(key); topicSubMap.remove(key); }
void removeMessage(MessageId id) { Message removed; synchronized (this) { removed = map.remove(id); if ((lastBatch != null && lastBatch.equals(id)) || map.isEmpty()) { resetBatching(); } } if (removed != null) { removed.decrementReferenceCount(); } }
@Override public synchronized int getMessageCount(String clientId, String subscriberName) throws IOException { int result = 0; MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriberName)); if (sub != null) { result = sub.size(); } return result; }
public synchronized void addMessage(ConnectionContext context, Message message) throws IOException { super.addMessage(context, message); for (Iterator<MemoryTopicSub> i = topicSubMap.values().iterator(); i.hasNext();) { MemoryTopicSub sub = i.next(); sub.addMessage(message.getMessageId(), message); } }
public synchronized void acknowledge(ConnectionContext context, String clientId, String subscriptionName, MessageId messageId, MessageAck ack) throws IOException { SubscriptionKey key = new SubscriptionKey(clientId, subscriptionName); MemoryTopicSub sub = topicSubMap.get(key); if (sub != null) { sub.removeMessage(messageId); } }
@Override public synchronized long getMessageSize(String clientId, String subscriberName) throws IOException { long result = 0; MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriberName)); if (sub != null) { result = sub.messageSize(); } return result; }
@Override public synchronized void deleteSubscription(String clientId, String subscriptionName) { SubscriptionKey key = new SubscriptionKey(clientId, subscriptionName); subscriberDatabase.remove(key); MemoryTopicSub subscription = topicSubMap.get(key); if (subscription != null) { List<Message> storedMessages = subscription.getStoredMessages(); for (Message message : storedMessages) { try { acknowledge(null, key.getClientId(), key.getSubscriptionName(), message.getMessageId(), null); } catch (IOException e) { } } } subscriberDatabase.remove(key); topicSubMap.remove(key); }
@Override public synchronized void addSubscription(SubscriptionInfo info, boolean retroactive) throws IOException { SubscriptionKey key = new SubscriptionKey(info); MemoryTopicSub sub = new MemoryTopicSub(key); topicSubMap.put(key, sub); if (retroactive) { for (Map.Entry<MessageId, Message> entry : messageTable.entrySet()) { sub.addMessage(entry.getKey(), entry.getValue()); } } subscriberDatabase.put(key, info); }
@Override public void resetBatching(String clientId, String subscriptionName) { MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriptionName)); if (sub != null) { sub.resetBatching(); } }
@Override public synchronized void recoverSubscription(String clientId, String subscriptionName, MessageRecoveryListener listener) throws Exception { MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriptionName)); if (sub != null) { sub.recoverSubscription(listener); } }
@Override public synchronized int getMessageCount(String clientId, String subscriberName) throws IOException { int result = 0; MemoryTopicSub sub = topicSubMap.get(new SubscriptionKey(clientId, subscriberName)); if (sub != null) { result = sub.size(); } return result; }
@Override public synchronized void recoverNextMessages(String clientId, String subscriptionName, int maxReturned, MessageRecoveryListener listener) throws Exception { MemoryTopicSub sub = this.topicSubMap.get(new SubscriptionKey(clientId, subscriptionName)); if (sub != null) { sub.recoverNextMessages(maxReturned, listener); } }