Author: toad
Date: 2006-12-23 00:39:22 +0000 (Sat, 23 Dec 2006)
New Revision: 11515

Modified:
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/RequestStarterGroup.java
   trunk/freenet/src/freenet/node/ThrottleWindowManager.java
   trunk/freenet/src/freenet/node/Version.java
Log:
1009: Load limiting experiment (multiply window by number of peers). Mandatory 
on 31 december.

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2006-12-22 22:01:55 UTC 
(rev 11514)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2006-12-23 00:39:22 UTC 
(rev 11515)
@@ -721,4 +721,21 @@
        public void start() {
                node.clientCore.alerts.register(ua);
        }
+
+       public int countRoutablePeers() {
+               PeerNode[] peers;
+               synchronized(this) {
+                       peers = connectedPeers; // even if myPeers peers are 
connected they won't be routed to
+               }
+               int count = 0;
+               int countNoBackoff = 0;
+               for(int i=0;i<peers.length;i++) {
+                       if(peers[i].isRoutable()) {
+                               count++;
+                               if(peers[i].isRoutingBackedOff()) 
countNoBackoff++;
+                       }
+               }
+               if(countNoBackoff == 0) return count;
+               return countNoBackoff;
+       }
 }

Modified: trunk/freenet/src/freenet/node/RequestStarterGroup.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestStarterGroup.java     2006-12-22 
22:01:55 UTC (rev 11514)
+++ trunk/freenet/src/freenet/node/RequestStarterGroup.java     2006-12-23 
00:39:22 UTC (rev 11515)
@@ -32,7 +32,7 @@
        RequestStarterGroup(Node node, NodeClientCore core, int portNumber, 
RandomSource random, Config config, SimpleFieldSet fs) {
                SubConfig schedulerConfig = new SubConfig("node.scheduler", 
config);

-               throttleWindow = new ThrottleWindowManager(2.0, fs == null ? 
null : fs.subset("ThrottleWindow"));
+               throttleWindow = new ThrottleWindowManager(2.0, fs == null ? 
null : fs.subset("ThrottleWindow"), node);
                chkRequestThrottle = new MyRequestThrottle(throttleWindow, 
5000, "CHK Request", fs == null ? null : fs.subset("CHKRequestThrottle"), 
32768);
                chkRequestStarter = new RequestStarter(core, 
chkRequestThrottle, "CHK Request starter ("+portNumber+ ')', 
node.requestOutputThrottle, node.requestInputThrottle, 
node.localChkFetchBytesSentAverage, node.localChkFetchBytesReceivedAverage, 
false);
                chkFetchScheduler = new ClientRequestScheduler(false, false, 
random, chkRequestStarter, node, schedulerConfig, "CHKrequester");

Modified: trunk/freenet/src/freenet/node/ThrottleWindowManager.java
===================================================================
--- trunk/freenet/src/freenet/node/ThrottleWindowManager.java   2006-12-22 
22:01:55 UTC (rev 11514)
+++ trunk/freenet/src/freenet/node/ThrottleWindowManager.java   2006-12-23 
00:39:22 UTC (rev 11515)
@@ -14,7 +14,10 @@
        private long _totalPackets = 0, _droppedPackets = 0;
        private double _simulatedWindowSize = 2;

-       public ThrottleWindowManager(double def, SimpleFieldSet fs) {
+       private final Node node;
+       
+       public ThrottleWindowManager(double def, SimpleFieldSet fs, Node node) {
+               this.node = node;
                if(fs != null) {
                        _totalPackets = fs.getInt("TotalPackets", 0);
                        _droppedPackets = fs.getInt("DroppedPackets", 0);
@@ -28,7 +31,7 @@
                if (_simulatedWindowSize < 1.0) {
                        _simulatedWindowSize = 1.0F;
                }
-               return _simulatedWindowSize;
+               return _simulatedWindowSize * Math.max(1, 
node.peers.countRoutablePeers());
        }

        public synchronized void rejectedOverload() {

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-12-22 22:01:55 UTC (rev 
11514)
+++ trunk/freenet/src/freenet/node/Version.java 2006-12-23 00:39:22 UTC (rev 
11515)
@@ -24,17 +24,17 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 1008;
+       private static final int buildNumber = 1009;

        /** Oldest build of Fred we will talk to */
-       private static final int oldLastGoodBuild = 1002;
-       private static final int newLastGoodBuild = 1007;
+       private static final int oldLastGoodBuild = 1007;
+       private static final int newLastGoodBuild = 1009;
        private static final long transitionTime;

        static {
                final Calendar _cal = 
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
                // year, month - 1 (or constant), day, hour, minute, second
-               _cal.set( 2006, Calendar.DECEMBER, 25, 0, 0, 0 );
+               _cal.set( 2006, Calendar.DECEMBER, 31, 0, 0, 0 );
                transitionTime = _cal.getTimeInMillis();
        }



Reply via email to