Author: toad
Date: 2008-08-29 00:08:22 +0000 (Fri, 29 Aug 2008)
New Revision: 22211
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
Activation, generics, remove the PersistentChosenRequest from the starter queue
rather than from the running requests list
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-08-28 23:38:39 UTC (rev 22210)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-08-29 00:08:22 UTC (rev 22211)
@@ -566,6 +566,17 @@
}
}
+ void removeFromStarterQueue(SendableRequest req) {
+ synchronized(starterQueue) {
+ for(int i=0;i<starterQueue.size();i++) {
+ if(starterQueue.get(i).request == req) {
+ starterQueue.remove(i);
+ i--;
+ }
+ }
+ }
+ }
+
int starterQueueSize() {
synchronized(starterQueue) {
return starterQueue.size();
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-08-28 23:38:39 UTC (rev 22210)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-08-29 00:08:22 UTC (rev 22211)
@@ -56,7 +56,7 @@
final long[] checkCooldownTimes;
final int[] dataRetries;
final int[] checkRetries;
- final Vector subSegments;
+ final Vector<SplitFileFetcherSubSegment> subSegments;
final int minFetched;
final SplitFileFetcher parentFetcher;
final ClientRequester parent;
@@ -189,7 +189,7 @@
return fatallyFailedBlocks;
}
- public void onSuccess(Bucket data, int blockNo, ClientKeyBlock block,
ObjectContainer container, ClientContext context) {
+ public void onSuccess(Bucket data, int blockNo, ClientKeyBlock block,
ObjectContainer container, ClientContext context, SplitFileFetcherSubSegment
sub) {
if(persistent)
container.activate(this, 1);
if(data == null) throw new NullPointerException();
@@ -870,6 +870,9 @@
if(persistent)
container.activate(deadSegs[i], 1);
deadSegs[i].kill(container, context, true);
+
context.getChkFetchScheduler().removeFromStarterQueue(deadSegs[i]);
+ if(persistent)
+ container.deactivate(deadSegs[i], 1);
}
if(persistent) {
container.set(this);
@@ -1163,7 +1166,7 @@
if(data == null) return false;
if(!cb.isMetadata()) {
- this.onSuccess(data, blockNum, cb, container, context);
+ this.onSuccess(data, blockNum, cb, container, context,
seg);
return true;
} else {
this.onFatalFailure(new
FetchException(FetchException.INVALID_METADATA, "Metadata where expected
data"), blockNum, null, container, context);
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-08-28 23:38:39 UTC (rev 22210)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-08-29 00:08:22 UTC (rev 22211)
@@ -410,7 +410,7 @@
onFailure(new FetchException(FetchException.CANCELLED),
token, container, context);
return;
}
- segment.onSuccess(data, blockNo, block, container, context);
+ segment.onSuccess(data, blockNo, block, container, context,
this);
}
/** Convert a ClientKeyBlock to a Bucket. If an error occurs, report it
via onFailure