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;