Author: zothar
Date: 2006-06-11 17:18:37 +0000 (Sun, 11 Jun 2006)
New Revision: 9155

Added:
   trunk/freenet/src/freenet/node/ARKFetchManager.java
Modified:
   trunk/freenet/src/freenet/node/Version.java
Log:
804: Fix failed commit of build 803 by adding ARKFetchManager :)

Added: trunk/freenet/src/freenet/node/ARKFetchManager.java
===================================================================
--- trunk/freenet/src/freenet/node/ARKFetchManager.java 2006-06-11 17:13:35 UTC 
(rev 9154)
+++ trunk/freenet/src/freenet/node/ARKFetchManager.java 2006-06-11 17:18:37 UTC 
(rev 9155)
@@ -0,0 +1,79 @@
+package freenet.node;
+
+import java.util.LinkedList;
+
+import freenet.support.Logger;
+
+/**
+ * @author zothar
+ * 
+ * Maintains:
+ * - A list of ARKFetchers who want to fetch
+ */
+public class ARKFetchManager {
+       
+       /** Our Node */
+       final Node node;
+       
+       /** All the ARKFetchers who want to fetch */
+       private LinkedList readyARKFetchers = new LinkedList();
+       
+       /**
+        * Create a ARKFetchManager
+        * @param node
+        */
+       public ARKFetchManager(Node node) {
+               Logger.normal(this, "Creating ARKFetchManager");
+               System.out.println("Creating ARKFetchManager");
+               this.node = node;
+       }
+
+       public void addReadyARKFetcher(ARKFetcher arkFetcher) {
+               synchronized(readyARKFetchers) {
+                       if(readyARKFetchers.contains(arkFetcher)) {
+                               Logger.error(this, arkFetcher.peer.getPeer()+" 
already in readyARKFetchers");
+                               return;
+                       }
+                       readyARKFetchers.addLast(arkFetcher);
+               }
+       }
+       
+       public boolean hasReadyARKFetchers() {
+               if(readyARKFetchers.size() > 0) {
+                       return true;
+               }
+               return false;
+       }
+       
+       public void maybeStartNextReadyARKFetcher() {
+               synchronized(readyARKFetchers) {
+                       if(node.getNumARKFetchers() >= 30) {
+                               Logger.minor(this, "Not starting ARKFetcher in 
maybeStartNextReadyARKFetcher() because there are already 30 or more ARK 
Fetchers running");
+                               return;
+                       }
+                       if(!hasReadyARKFetchers()) {
+                               Logger.minor(this, 
"maybeStartNextReadyARKFetcher() called with no ARKFetchers ready");
+                               return;
+                       }
+                       while( true ) {
+                               if(readyARKFetchers.size() <= 0) {
+                                       break;
+                               }
+                               ARKFetcher nextARKFetcher = (ARKFetcher) 
readyARKFetchers.removeFirst();
+                               if(!nextARKFetcher.peer.isConnected()) {
+                                       
nextARKFetcher.queueRunnableImmediately();
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       public void removeReadyARKFetcher(ARKFetcher arkFetcher) {
+               synchronized(readyARKFetchers) {
+                       if(!readyARKFetchers.contains(arkFetcher)) {
+                               return;
+                       }
+                       readyARKFetchers.remove(arkFetcher);
+               }
+       }
+}

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-06-11 17:13:35 UTC (rev 
9154)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-11 17:18:37 UTC (rev 
9155)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

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

        /** Oldest build of Fred we will talk to */
        private static final int lastGoodBuild = 765;


Reply via email to