Author: j16sdiz
Date: 2009-04-23 08:55:06 +0000 (Thu, 23 Apr 2009)
New Revision: 27239

Modified:
   trunk/freenet/src/freenet/node/PeerMessageQueue.java
Log:
Factor out common code: PeerMessageQueue.addMessages()

Modified: trunk/freenet/src/freenet/node/PeerMessageQueue.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerMessageQueue.java        2009-04-23 
08:54:45 UTC (rev 27238)
+++ trunk/freenet/src/freenet/node/PeerMessageQueue.java        2009-04-23 
08:55:06 UTC (rev 27239)
@@ -150,16 +150,7 @@
                        return length;
                }
 
-               /**
-                * @param size
-                * @param minSize
-                * @param maxSize
-                * @param now
-                * @param messages
-                * @return The new size of the packet, multiplied by -1 iff 
there are more
-                * messages but they don't fit.
-                */
-               public int addUrgentMessages(int size, int minSize, int 
maxSize, long now, ArrayList<MessageItem> messages) {
+               private int addMessages(int size, int minSize, int maxSize, 
long now, ArrayList<MessageItem> messages, boolean isUrgent) {
                        int lists = 0;
                        if(itemsNoID != null)
                                lists++;
@@ -179,93 +170,12 @@
                                        listNum = l;
                                        list = itemsWithID.get(l);
                                }
-                               
+
                                while(true) {
                                        if(list.isEmpty()) break;
                                        MessageItem item = list.getFirst();
-                                       if(item.submitted + 
PacketSender.MAX_COALESCING_DELAY <= now) {
-                                               int thisSize = item.getLength();
-                                               if(size + 2 + thisSize > 
maxSize) {
-                                                       if(size == minSize) {
-                                                               // Send it 
anyway, nothing else to send.
-                                                               size += 2 + 
thisSize;
-                                                               
list.removeFirst();
-                                                               
if(list.isEmpty()) {
-                                                                       if(list 
== itemsNoID) {
-                                                                               
itemsNoID = null;
-                                                                               
lists--;
-                                                                       }
-                                                                       else {
-                                                                               
Long id = itemsIDs.get(listNum);
-                                                                               
itemsWithID.remove(listNum);
-                                                                               
itemsIDs.remove(listNum);
-                                                                               
itemsByID.remove(id);
-                                                                               
lists--;
-                                                                       }
-                                                               }
-                                                               
messages.add(item);
-                                                               
roundRobinCounter = i;
-                                                               return size;
-                                                       }
-                                                       return -size;
-                                               }
-                                               size += 2 + thisSize;
-                                               list.removeFirst();
-                                               if(list.isEmpty()) {
-                                                       if(list == itemsNoID) {
-                                                               itemsNoID = 
null;
-                                                               lists--;
-                                                       } else {
-                                                               Long id = 
itemsIDs.get(listNum);
-                                                               
itemsWithID.remove(listNum);
-                                                               
itemsIDs.remove(listNum);
-                                                               
itemsByID.remove(id);
-                                                               lists--;
-                                                       }
-                                               }
-                                               messages.add(item);
-                                               roundRobinCounter = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-                       return size;
-               }
-               
-               /**
-                * @param size
-                * @param minSize
-                * @param maxSize
-                * @param now
-                * @param messages
-                * @return The new size of the packet, multiplied by -1 iff 
there are more
-                * messages but they don't fit.
-                */
-               public int addMessages(int size, int minSize, int maxSize, long 
now, ArrayList<MessageItem> messages) {
-                       int lists = 0;
-                       if(itemsNoID != null)
-                               lists++;
-                       if(itemsWithID != null)
-                               lists += itemsWithID.size();
-                       for(int i=0;i<lists;i++) {
-                               LinkedList<MessageItem> list;
-                               int l = (i + roundRobinCounter + 1) % lists;
-                               int listNum = -1;
-                               if(itemsNoID != null) {
-                                       if(l == 0) list = itemsNoID;
-                                       else {
-                                               listNum = l-1;
-                                               list = itemsWithID.get(listNum);
-                                       }
-                               } else {
-                                       listNum = l;
-                                       list = itemsWithID.get(l);
-                               }
-                               
-                               while(true) {
-                                       if(list.isEmpty()) break;
-                                       MessageItem item = list.getFirst();
+                                       if(isUrgent && item.submitted + 
PacketSender.MAX_COALESCING_DELAY > now) break;
+                                       
                                        int thisSize = item.getLength();
                                        if(size + 2 + thisSize > maxSize) {
                                                if(size == minSize) {
@@ -276,7 +186,8 @@
                                                                if(list == 
itemsNoID) {
                                                                        
itemsNoID = null;
                                                                        lists--;
-                                                               } else {
+                                                               }
+                                                               else {
                                                                        Long id 
= itemsIDs.get(listNum);
                                                                        
itemsWithID.remove(listNum);
                                                                        
itemsIDs.remove(listNum);
@@ -310,6 +221,32 @@
                        }
                        return size;
                }
+               
+               /**
+                * @param size
+                * @param minSize
+                * @param maxSize
+                * @param now
+                * @param messages
+                * @return The new size of the packet, multiplied by -1 iff 
there are more
+                * messages but they don't fit.
+                */
+               public int addUrgentMessages(int size, int minSize, int 
maxSize, long now, ArrayList<MessageItem> messages) {
+                       return addMessages(size, minSize, maxSize, now, 
messages, true);
+               }
+               
+               /**
+                * @param size
+                * @param minSize
+                * @param maxSize
+                * @param now
+                * @param messages
+                * @return The new size of the packet, multiplied by -1 iff 
there are more
+                * messages but they don't fit.
+                */
+               public int addMessages(int size, int minSize, int maxSize, long 
now, ArrayList<MessageItem> messages) {
+                       return addMessages(size, minSize, maxSize, now, 
messages, false);
+               }
 
                public void clear() {
                        itemsNoID = null;

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to