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


Reply via email to