Author: toad
Date: 2008-03-13 20:00:06 +0000 (Thu, 13 Mar 2008)
New Revision: 18510

Modified:
   trunk/freenet/src/freenet/io/xfer/PacketThrottle.java
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Create PacketThrottle's directly. Delete the old static code. It *really* 
doesn't work well with simulations!

Modified: trunk/freenet/src/freenet/io/xfer/PacketThrottle.java
===================================================================
--- trunk/freenet/src/freenet/io/xfer/PacketThrottle.java       2008-03-13 
18:51:23 UTC (rev 18509)
+++ trunk/freenet/src/freenet/io/xfer/PacketThrottle.java       2008-03-13 
20:00:06 UTC (rev 18510)
@@ -18,9 +18,6 @@
  */
 package freenet.io.xfer;

-import java.util.HashMap;
-import java.util.Map;
-
 import freenet.io.comm.AsyncMessageCallback;
 import freenet.io.comm.ByteCounter;
 import freenet.io.comm.Message;
@@ -40,7 +37,6 @@
        protected static final long MIN_DELAY = 25;
        public static final String VERSION = "$Id: PacketThrottle.java,v 1.3 
2005/08/25 17:28:19 amphibian Exp $";
        public static final long DEFAULT_DELAY = 200;
-       private static Map _throttles = new HashMap();
        private final Peer _peer;
        private long _roundTripTime = 500, _totalPackets, _droppedPackets;
        private float _simulatedWindowSize = 2;
@@ -57,23 +53,7 @@
        private static boolean logMINOR;
        private PacketThrottle _deprecatedFor;

-       /**
-        * Create a PacketThrottle for a given peer.
-        * @param receiver The peer we want to send to.
-        * @param packetSize The packet size for this particular peer. Will be 
ignored
-        * if we already have a PacketThrottle for that peer; hopefully we 
won't need
-        * to change this. Mostly I just put this in to ensure it got set 
somewhere.
-        * @return
-        */
-       public static PacketThrottle getThrottle(Peer receiver, int packetSize) 
{
-               if (!_throttles.containsKey(receiver)) {
-                       _throttles.put(receiver, new PacketThrottle(receiver, 
packetSize));
-               }
-               PacketThrottle pt = (PacketThrottle) _throttles.get(receiver);
-               return pt;
-       }
-
-       private PacketThrottle(Peer peer, int packetSize) {
+       public PacketThrottle(Peer peer, int packetSize) {
                _peer = peer;
                PACKET_SIZE = packetSize;
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
@@ -283,4 +263,8 @@
                _deprecatedFor = newThrottle;
                notifyAll();
        }
+
+       public Peer getPeer() {
+               return _peer;
+       }
 }

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2008-03-13 18:51:23 UTC 
(rev 18509)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2008-03-13 20:00:06 UTC 
(rev 18510)
@@ -3130,13 +3130,17 @@

     public PacketThrottle getThrottle() {
        // pn.getPeer() cannot be null as it has already connected.
-       PacketThrottle newThrottle = PacketThrottle.getThrottle(getPeer(), 
Node.PACKET_SIZE);
+       PacketThrottle newThrottle = null;
        PacketThrottle prevThrottle = null;
        synchronized(this) {
-               if(newThrottle != _lastThrottle) {
-                       prevThrottle = _lastThrottle;
-                       _lastThrottle = newThrottle;
-               } else return newThrottle;
+               Peer peer = getPeer();
+               if(_lastThrottle != null) {
+                       if(_lastThrottle.getPeer().equals(peer))
+                               return _lastThrottle;
+               }
+               newThrottle = new PacketThrottle(peer, Node.PACKET_SIZE);
+               prevThrottle = _lastThrottle;
+               _lastThrottle = newThrottle;
        }
        if(prevThrottle != null)
                prevThrottle.changedAddress(newThrottle);


Reply via email to