summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-05-25 15:00:24 +0000
committerRobert Gemmell <robbie@apache.org>2012-05-25 15:00:24 +0000
commit8f460e49c0c32fd773dd3d3fb8b73ea563527b5a (patch)
treed5356c6472f76965488c17074ddcd34957dca78e /qpid/java/broker/src
parentae9385ec1b22b6ebf68237ef90a61a83e5daceb1 (diff)
downloadqpid-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.java17
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)
{