Author: toad
Date: 2008-05-21 12:28:00 +0000 (Wed, 21 May 2008)
New Revision: 20010
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
Log:
Some more juggling...
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-05-21 12:22:36 UTC (rev 20009)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-05-21 12:28:00 UTC (rev 20010)
@@ -265,10 +265,10 @@
}
public void succeeded(BaseSendableGet succeeded) {
-// if(succeeded.persistent())
+ if(succeeded.persistent())
schedCore.succeeded(succeeded);
-// else
-// schedTransient.succeeded(succeeded);
+ else
+ schedTransient.succeeded(succeeded);
}
public void tripPendingKey(final KeyBlock block) {
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-05-21 12:22:36 UTC (rev 20009)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-05-21 12:28:00 UTC (rev 20010)
@@ -4,11 +4,13 @@
package freenet.client.async;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import freenet.crypt.RandomSource;
import freenet.keys.ClientKey;
import freenet.keys.Key;
+import freenet.node.BaseSendableGet;
import freenet.node.RequestStarter;
import freenet.node.SendableGet;
import freenet.node.SendableRequest;
@@ -33,6 +35,10 @@
private static final int MIN_RETRY_COUNT = 3;
private static boolean logMINOR;
+
+ final boolean isInsertScheduler;
+ final boolean isSSKScheduler;
+
/** All pending gets by key. Used to automatically satisfy pending
requests when either the key is fetched by
* an overlapping request, or it is fetched by a request from another
node. Operations on this are synchronized on
* itself. */
@@ -47,10 +53,14 @@
*/
protected final SortedVectorByNumber[] priorities;
protected final Map allRequestsByClientRequest;
+ protected final List /* <BaseSendableGet> */ recentSuccesses;
- protected ClientRequestSchedulerBase(Map pendingKeys, Map
allRequestsByClientRequest) {
+ protected ClientRequestSchedulerBase(boolean forInserts, boolean
forSSKs, Map pendingKeys, Map allRequestsByClientRequest, List recentSuccesses)
{
+ this.isInsertScheduler = forInserts;
+ this.isSSKScheduler = forSSKs;
this.pendingKeys = pendingKeys;
this.allRequestsByClientRequest = allRequestsByClientRequest;
+ this.recentSuccesses = recentSuccesses;
priorities = new
SortedVectorByNumber[RequestStarter.NUMBER_OF_PRIORITY_CLASSES];
logMINOR = Logger.shouldLog(Logger.MINOR,
ClientRequestSchedulerBase.class);
}
@@ -283,5 +293,15 @@
}
}
+ public void succeeded(BaseSendableGet succeeded) {
+ if(isInsertScheduler) return;
+ synchronized(this) {
+ if(logMINOR)
+ Logger.minor(this, "Recording successful fetch
from "+succeeded);
+ recentSuccesses.add(succeeded);
+ while(recentSuccesses.size() > 8)
+ recentSuccesses.remove(0);
+ }
+ }
}
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-05-21 12:22:36 UTC (rev 20009)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-05-21 12:28:00 UTC (rev 20010)
@@ -4,7 +4,6 @@
package freenet.client.async;
import java.util.HashSet;
-import java.util.List;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
@@ -34,12 +33,9 @@
private static boolean logMINOR;
/** Identifier in the database for the node we are attached to */
private final long nodeDBHandle;
- final boolean isInsertScheduler;
- final boolean isSSKScheduler;
// FIXME cooldown queue ????
// Can we make the cooldown queue non-persistent? It refers to
SendableGet's ... so
// keeping it in memory may be a problem...
- private final List /* <BaseSendableGet> */ recentSuccesses;
/**
* Fetch a ClientRequestSchedulerCore from the database, or create a
new one.
@@ -71,11 +67,8 @@
}
ClientRequestSchedulerCore(Node node, boolean forInserts, boolean
forSSKs, ObjectContainer selectorContainer) {
- super(forInserts ? null :
selectorContainer.ext().collections().newHashMap(1024),
selectorContainer.ext().collections().newHashMap(32));
+ super(forInserts, forSSKs, forInserts ? null :
selectorContainer.ext().collections().newHashMap(1024),
selectorContainer.ext().collections().newHashMap(32),
selectorContainer.ext().collections().newLinkedList());
this.nodeDBHandle = node.nodeDBHandle;
- this.isInsertScheduler = forInserts;
- this.isSSKScheduler = forSSKs;
- recentSuccesses =
selectorContainer.ext().collections().newLinkedList();
}
private void onStarted() {
@@ -276,16 +269,5 @@
RequestStarter.MINIMUM_PRIORITY_CLASS
};
- public void succeeded(BaseSendableGet succeeded) {
- if(isInsertScheduler) return;
- synchronized(this) {
- if(logMINOR)
- Logger.minor(this, "Recording successful fetch
from "+succeeded);
- recentSuccesses.add(succeeded);
- while(recentSuccesses.size() > 8)
- recentSuccesses.remove(0);
- }
- }
-
}
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
2008-05-21 12:22:36 UTC (rev 20009)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
2008-05-21 12:28:00 UTC (rev 20010)
@@ -31,7 +31,7 @@
final LinkedList /* <BaseSendableGet> */ recentSuccesses;
ClientRequestSchedulerNonPersistent(ClientRequestScheduler sched) {
- super(sched.isInsertScheduler ? null : new HashMap(), new
HashMap());
+ super(sched.isInsertScheduler, sched.isSSKScheduler,
sched.isInsertScheduler ? null : new HashMap(), new HashMap(), new
LinkedList());
allRequestsByClientRequest = new HashMap();
priorities = new
SortedVectorByNumber[RequestStarter.NUMBER_OF_PRIORITY_CLASSES];
recentSuccesses = new LinkedList();