Author: robbie
Date: Fri May 25 15:00:24 2012
New Revision: 1342667

URL: http://svn.apache.org/viewvc?rev=1342667&view=rev
Log:
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

Modified:
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java?rev=1342667&r1=1342666&r2=1342667&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java
 Fri May 25 15:00:24 2012
@@ -37,7 +37,7 @@ public class PriorityQueueList implement
         _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 implement
 
     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 implement
         {
             return new PriorityQueueEntryImpl(this, message);
         }
+
+        public int getListPriority()
+        {
+            return _listPriority;
+        }
     }
 
     private static class PriorityQueueEntryImpl extends SimpleQueueEntryImpl
@@ -186,8 +194,9 @@ public class PriorityQueueList implement
         @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)
             {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to