public synchronized ActiveMQMessage[] getMessagesToDispatch() throws JMSException {
if (usePrefetch) {
return getMessagesWithPrefetch();
}
List tmpList = new ArrayList();
QueueListEntry entry = messagePtrs.getFirstEntry();
while (entry != null) {
MessagePointer pointer = (MessagePointer) entry.getElement();
if (!pointer.isDispatched()) {
ActiveMQMessage msg = pointer.getContainer().getMessage(pointer.getMessageIdentity());
if (msg != null) {
if (pointer.isDispatched() || pointer.isRedelivered()) {
//already dispatched - so mark as redelivered
msg.setJMSRedelivered(true);
}
pointer.setDispatched(true);
tmpList.add(msg);
}
else {
//the message is probably expired
log.info("Message probably expired: " + msg);
QueueListEntry discarded = entry;
entry = messagePtrs.getPrevEntry(discarded);
messagePtrs.remove(discarded);
}
}
entry = messagePtrs.getNextEntry(entry);