@Override protected void onOpen() { super.onOpen(); _entries = new StandardQueueEntryList(this, getQueueStatistics()); }
private boolean consumerHasAvailableMessages(final QueueConsumer consumer) { final QueueEntry queueEntry; return !consumer.acquires() || ((queueEntry = getNextAvailableEntry(consumer)) != null && noHigherPriorityWithCredit(consumer, queueEntry)); }
@Override public void release() { super.release(); discardIfReleasedEntryIsNoLongerLatest(); }
private void updateExpiration(final QueueEntry entry) { long expiration = calculateExpiration(entry.getMessage()); if (expiration > 0) { entry.setExpiration(expiration); } }
public void resetSubPointersForGroups(QueueConsumer<?,?> consumer) { QueueEntry entry = _messageGroupManager.findEarliestAssignedAvailableEntry(consumer); _messageGroupManager.clearAssignments(consumer); if(entry != null) { resetSubPointersForGroups(entry); } }
@Override public MessageInfo getMessageInfoById(final long messageId, boolean includeHeaders) { final MessageFinder messageFinder = new MessageFinder(messageId, includeHeaders); visit(messageFinder); return messageFinder.getMessageInfo(); }
@Override protected void onOpen() { super.onOpen(); _entries = new SortedQueueEntryList(this, getQueueStatistics()); }
private boolean notifyConsumer(final QueueConsumer<?,?> consumer) { if(consumerHasAvailableMessages(consumer) && _queueConsumerManager.setNotified(consumer, true)) { consumer.notifyWork(); return true; } else { return false; } }
@Override public boolean removeConsumer(final QueueConsumer<?,?> consumer) { removeFromAll(consumer); QueueConsumerNode node = consumer.getQueueConsumerNode(); if (node.moveFromTo(STATES_OTHER_THAN_REMOVED, NodeState.REMOVED)) { _count--; return true; } return false; }
@Override protected void onOpen() { super.onOpen(); _entries = new LastValueQueueList(this, getQueueStatistics()); }
@Override public synchronized boolean acceptMessage(final QueueConsumer<?,?> sub, final QueueEntry entry) { return assignMessage(sub, entry) && entry.acquire(sub); }
@Override public Iterator<QueueConsumer<?,?>> getInterestedIterator() { return new QueueConsumerIterator(new PrioritisedQueueConsumerNodeIterator(_interested)); }
@Override public Iterator<QueueConsumer<?,?>> getNonAcquiringIterator() { return new QueueConsumerIterator(_nonAcquiring.iterator()); }
public QueueConsumerNodeListEntry add(final QueueConsumerNode node) { QueueConsumerNodeListEntry entry = new QueueConsumerNodeListEntry(this, node); insert(entry, true); return entry; }
@Override public QueueEntryIterator queueEntryIterator() { return getEntries().iterator(); }
@Override public QueueEntry getLeastSignificantOldestEntry() { return getEntries().getLeastSignificantOldestEntry(); }
public static PriorityQueueList newInstance(PriorityQueueImpl queue) { return new PriorityQueueMasterList(queue, queue.getPriorities()); }
private boolean assign(final QueueConsumer<?,?> sub, final QueueEntry entry) { if(_messageGroupManager == null) { //no grouping, try to acquire immediately. return entry.acquire(sub); } else { //the group manager is responsible for acquiring the message if/when appropriate return _messageGroupManager.acceptMessage(sub, entry); } }
@Override public void release(MessageInstanceConsumer<?> consumer) { super.release(consumer); discardIfReleasedEntryIsNoLongerLatest(); }