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);