diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-05-25 15:00:24 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-05-25 15:00:24 +0000 |
| commit | 8f460e49c0c32fd773dd3d3fb8b73ea563527b5a (patch) | |
| tree | d5356c6472f76965488c17074ddcd34957dca78e /qpid/java/broker/src | |
| parent | ae9385ec1b22b6ebf68237ef90a61a83e5daceb1 (diff) | |
| download | qpid-python-8f460e49c0c32fd773dd3d3fb8b73ea563527b5a.tar.gz | |
QPID-4012: update the priority queue entry sub lists to maintain a record of the priority index they represent, refer to this when comparing queue entries in order to avoid using the metadata later than is possible
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1342667 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src')
| -rw-r--r-- | qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java index 1d13ee66c0..66315af9fb 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java @@ -37,7 +37,7 @@ public class PriorityQueueList implements QueueEntryList<SimpleQueueEntryImpl> _priorityOffset = 5-((priorities + 1)/2); for(int i = 0; i < priorities; i++) { - _priorityLists[i] = new PriorityQueueEntrySubList(queue); + _priorityLists[i] = new PriorityQueueEntrySubList(queue, i); } } @@ -164,9 +164,12 @@ public class PriorityQueueList implements QueueEntryList<SimpleQueueEntryImpl> private static class PriorityQueueEntrySubList extends SimpleQueueEntryList { - public PriorityQueueEntrySubList(AMQQueue queue) + private int _listPriority; + + public PriorityQueueEntrySubList(AMQQueue queue, int listPriority) { super(queue); + _listPriority = listPriority; } @Override @@ -174,6 +177,11 @@ public class PriorityQueueList implements QueueEntryList<SimpleQueueEntryImpl> { return new PriorityQueueEntryImpl(this, message); } + + public int getListPriority() + { + return _listPriority; + } } private static class PriorityQueueEntryImpl extends SimpleQueueEntryImpl @@ -186,8 +194,9 @@ public class PriorityQueueList implements QueueEntryList<SimpleQueueEntryImpl> @Override public int compareTo(final QueueEntry o) { - byte thisPriority = getMessageHeader().getPriority(); - byte otherPriority = o.getMessageHeader().getPriority(); + PriorityQueueEntrySubList pqel = (PriorityQueueEntrySubList)((PriorityQueueEntryImpl)o).getQueueEntryList(); + int otherPriority = pqel.getListPriority(); + int thisPriority = ((PriorityQueueEntrySubList) getQueueEntryList()).getListPriority(); if(thisPriority != otherPriority) { |
