Author: toad
Date: 2008-05-21 12:16:57 +0000 (Wed, 21 May 2008)
New Revision: 20006
Modified:
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:
Move innerRegister as well
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-05-21 12:15:00 UTC (rev 20005)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-05-21 12:16:57 UTC (rev 20006)
@@ -3,6 +3,7 @@
* http://www.gnu.org/ for further details of the GPL. */
package freenet.client.async;
+import java.util.HashSet;
import java.util.Map;
import freenet.crypt.RandomSource;
@@ -45,10 +46,11 @@
* To speed up fetching, a RGA or SVBN must only exist if it is
non-empty.
*/
protected final SortedVectorByNumber[] priorities;
+ protected final Map allRequestsByClientRequest;
-
- protected ClientRequestSchedulerBase(Map pendingKeys) {
+ protected ClientRequestSchedulerBase(Map pendingKeys, Map
allRequestsByClientRequest) {
this.pendingKeys = pendingKeys;
+ this.allRequestsByClientRequest = allRequestsByClientRequest;
priorities = new
SortedVectorByNumber[RequestStarter.NUMBER_OF_PRIORITY_CLASSES];
logMINOR = Logger.shouldLog(Logger.MINOR,
ClientRequestSchedulerBase.class);
}
@@ -207,7 +209,20 @@
return pendingKeys.size();
else return 0;
}
-
+
+ synchronized void innerRegister(SendableRequest req, RandomSource
random) {
+ if(logMINOR) Logger.minor(this, "Still registering "+req+" at
prio "+req.getPriorityClass()+" retry "+req.getRetryCount()+" for
"+req.getClientRequest());
+ int retryCount = req.getRetryCount();
+ addToGrabArray(req.getPriorityClass(), retryCount,
fixRetryCount(retryCount), req.getClient(), req.getClientRequest(), req,
random);
+ HashSet v = (HashSet)
allRequestsByClientRequest.get(req.getClientRequest());
+ if(v == null) {
+ v = new HashSet();
+ allRequestsByClientRequest.put(req.getClientRequest(),
v);
+ }
+ v.add(req);
+ if(logMINOR) Logger.minor(this, "Registered "+req+" on
prioclass="+req.getPriorityClass()+", retrycount="+req.getRetryCount()+"
v.size()="+v.size());
+ }
+
synchronized void addToGrabArray(short priorityClass, int retryCount,
int rc, Object client, ClientRequester cr, SendableRequest req, RandomSource
random) {
if((priorityClass > RequestStarter.MINIMUM_PRIORITY_CLASS) ||
(priorityClass < RequestStarter.MAXIMUM_PRIORITY_CLASS))
throw new IllegalStateException("Invalid priority:
"+priorityClass+" - range is "+RequestStarter.MAXIMUM_PRIORITY_CLASS+" (most
important) to "+RequestStarter.MINIMUM_PRIORITY_CLASS+" (least important)");
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-05-21 12:15:00 UTC (rev 20005)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-05-21 12:16:57 UTC (rev 20006)
@@ -37,7 +37,6 @@
private final long nodeDBHandle;
final boolean isInsertScheduler;
final boolean isSSKScheduler;
- private final Map allRequestsByClientRequest;
// 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...
@@ -73,11 +72,10 @@
}
ClientRequestSchedulerCore(Node node, boolean forInserts, boolean
forSSKs, ObjectContainer selectorContainer) {
- super(forInserts ? null :
selectorContainer.ext().collections().newHashMap(1024));
+ super(forInserts ? null :
selectorContainer.ext().collections().newHashMap(1024),
selectorContainer.ext().collections().newHashMap(32));
this.nodeDBHandle = node.nodeDBHandle;
this.isInsertScheduler = forInserts;
this.isSSKScheduler = forSSKs;
- allRequestsByClientRequest =
selectorContainer.ext().collections().newHashMap(32);
recentSuccesses =
selectorContainer.ext().collections().newLinkedList();
}
@@ -87,19 +85,6 @@
((Db4oList)recentSuccesses).activationDepth(1);
}
- synchronized void innerRegister(SendableRequest req, RandomSource
random) {
- if(logMINOR) Logger.minor(this, "Still registering "+req+" at
prio "+req.getPriorityClass()+" retry "+req.getRetryCount()+" for
"+req.getClientRequest());
- int retryCount = req.getRetryCount();
- addToGrabArray(req.getPriorityClass(), retryCount,
fixRetryCount(retryCount), req.getClient(), req.getClientRequest(), req,
random);
- HashSet v = (HashSet)
allRequestsByClientRequest.get(req.getClientRequest());
- if(v == null) {
- v = new HashSet();
- allRequestsByClientRequest.put(req.getClientRequest(),
v);
- }
- v.add(req);
- if(logMINOR) Logger.minor(this, "Registered "+req+" on
prioclass="+req.getPriorityClass()+", retrycount="+req.getRetryCount()+"
v.size()="+v.size());
- }
-
private int removeFirstAccordingToPriorities(boolean tryOfferedKeys,
int fuzz, RandomSource random, OfferedKeysList[] offeredKeys){
SortedVectorByNumber result = null;
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
2008-05-21 12:15:00 UTC (rev 20005)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
2008-05-21 12:16:57 UTC (rev 20006)
@@ -31,7 +31,7 @@
final LinkedList /* <BaseSendableGet> */ recentSuccesses;
ClientRequestSchedulerNonPersistent(ClientRequestScheduler sched) {
- super(sched.isInsertScheduler ? null : new HashMap());
+ super(sched.isInsertScheduler ? null : new HashMap(), new
HashMap());
allRequestsByClientRequest = new HashMap();
priorities = new
SortedVectorByNumber[RequestStarter.NUMBER_OF_PRIORITY_CLASSES];
recentSuccesses = new LinkedList();