@Override public QueueEntryIterator queueEntryIterator() { return getEntries().iterator(); }
@Override public List<QueueEntry> getMessagesOnTheQueue() { ArrayList<QueueEntry> entryList = new ArrayList<QueueEntry>(); QueueEntryIterator queueListIterator = getEntries().iterator(); while (queueListIterator.advance()) { QueueEntry node = queueListIterator.getNode(); if (node != null && !node.isDeleted()) { entryList.add(node); } } return entryList; }
List<QueueEntry> getMessagesOnTheQueue(QueueEntryFilter filter) { ArrayList<QueueEntry> entryList = new ArrayList<QueueEntry>(); QueueEntryIterator queueListIterator = getEntries().iterator(); while (queueListIterator.advance() && !filter.filterComplete()) { QueueEntry node = queueListIterator.getNode(); MessageReference reference = node.newMessageReference(); if (reference != null) { try { if (!node.isDeleted() && filter.accept(node)) { entryList.add(node); } } finally { reference.release(); } } } return entryList; }
@Override public void checkMessageStatus() QueueEntryIterator queueListIterator = getEntries().iterator();
if (entries != null) final QueueEntryIterator queueListIterator = entries.iterator(); while (!_stopped.get() && queueListIterator.advance())
@Override public void visit(final QueueEntryVisitor visitor) { QueueEntryIterator queueListIterator = getEntries().iterator(); while(queueListIterator.advance()) { QueueEntry node = queueListIterator.getNode(); MessageReference reference = node.newMessageReference(); if(reference != null) { try { final boolean done = !node.isDeleted() && visitor.visit(node); if(done) { break; } } finally { reference.release(); } } } }
@Override public void reallocateMessages() { QueueEntryIterator queueListIterator = getEntries().iterator(); while (!_stopped.get() && queueListIterator.advance()) { final QueueEntry node = queueListIterator.getNode(); if (!node.isDeleted() && !node.expired()) { try { final ServerMessage message = node.getMessage(); final MessageReference messageReference = message.newReference(); try { message.getStoredMessage().reallocate(); } finally { messageReference.release(); } } catch (MessageDeletedException mde) { // Ignore } } } }
@Override public long clearQueue() { QueueEntryIterator queueListIterator = getEntries().iterator(); long count = 0; ServerTransaction txn = new LocalTransaction(getVirtualHost().getMessageStore()); while (queueListIterator.advance()) { final QueueEntry node = queueListIterator.getNode(); boolean acquired = node.acquireOrSteal(new Runnable() { @Override public void run() { dequeueEntry(node); } }); if (acquired) { dequeueEntry(node, txn); } } txn.commit(); return count; }