Author: robert
Date: 2008-01-11 23:06:54 +0000 (Fri, 11 Jan 2008)
New Revision: 17020
Modified:
trunk/freenet/src/freenet/node/MessageItem.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
implement simple queue priorities (does not affect coalescing delays)
Modified: trunk/freenet/src/freenet/node/MessageItem.java
===================================================================
--- trunk/freenet/src/freenet/node/MessageItem.java 2008-01-11 21:20:36 UTC
(rev 17019)
+++ trunk/freenet/src/freenet/node/MessageItem.java 2008-01-11 23:06:54 UTC
(rev 17020)
@@ -72,4 +72,8 @@
}
}
}
+
+ public short getPriority() {
+ return msg.getSpec().getPriority();
+ }
}
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2008-01-11 21:20:36 UTC
(rev 17019)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2008-01-11 23:06:54 UTC
(rev 17020)
@@ -16,6 +16,7 @@
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.ListIterator;
import java.util.Vector;
import java.util.zip.DataFormatException;
import java.util.zip.Inflater;
@@ -951,7 +952,7 @@
reportBackoffStatus(now);
int x = 0;
synchronized(messagesToSendNow) {
- messagesToSendNow.addLast(item);
+ enqueuePrioritizedMessageItem(item);
Iterator i = messagesToSendNow.iterator();
for(; i.hasNext();) {
MessageItem it = (MessageItem) (i.next());
@@ -981,6 +982,20 @@
return x;
}
+ private void enqueuePrioritizedMessageItem(MessageItem addMe) {
+ synchronized (messagesToSendNow) {
+ //Assume it goes on the end, both the common case and
an accelerator for requeueing.
+ ListIterator
i=messagesToSendNow.listIterator(messagesToSendNow.size());
+ while (i.hasPrevious()) {
+ MessageItem here=(MessageItem)i.previous();
+ //While the item we are adding is a HIGHER
priority, move on (backwards...)
+ if (!(addMe.getPriority() < here.getPriority()))
+ break;
+ }
+ i.add(addMe);
+ }
+ }
+
/**
* Returns the number of milliseconds that it is estimated to take to
transmit the currently queued packets.
*/
@@ -1169,7 +1184,7 @@
synchronized(messagesToSendNow) {
for(int i = offset; i < offset + length; i++)
if(messages[i] != null)
- messagesToSendNow.add(messages[i]);
+
enqueuePrioritizedMessageItem(messages[i]);
}
}