Author: toad
Date: 2007-02-16 20:21:52 +0000 (Fri, 16 Feb 2007)
New Revision: 11820

Modified:
   trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
   trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
   trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   trunk/freenet/src/freenet/node/SendableGet.java
Log:
Splitfile fetching too.

Modified: trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java 
2007-02-16 20:02:07 UTC (rev 11819)
+++ trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java 
2007-02-16 20:21:52 UTC (rev 11820)
@@ -22,7 +22,8 @@
  */
 public class SimpleSingleFileFetcher extends BaseSingleFileFetcher implements 
ClientGetState {

-       SimpleSingleFileFetcher(ClientKey key, int maxRetries, FetchContext 
ctx, ClientRequester parent, GetCompletionCallback rcb, boolean isEssential, 
long l) {
+       SimpleSingleFileFetcher(ClientKey key, int maxRetries, FetchContext 
ctx, ClientRequester parent, 
+                       GetCompletionCallback rcb, boolean isEssential, long l) 
{
                super(key, maxRetries, ctx, parent);
                this.rcb = rcb;
                this.token = l;

Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java        
2007-02-16 20:02:07 UTC (rev 11819)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java        
2007-02-16 20:21:52 UTC (rev 11820)
@@ -116,8 +116,8 @@
                if(segmentCount == 1) {
                        // splitfile* will be overwritten, this is bad
                        // so copy them
-                       FreenetURI[] newSplitfileDataBlocks = new 
FreenetURI[splitfileDataBlocks.length];
-                       FreenetURI[] newSplitfileCheckBlocks = new 
FreenetURI[splitfileCheckBlocks.length];
+                       ClientCHK[] newSplitfileDataBlocks = new 
ClientCHK[splitfileDataBlocks.length];
+                       ClientCHK[] newSplitfileCheckBlocks = new 
ClientCHK[splitfileCheckBlocks.length];
                        System.arraycopy(splitfileDataBlocks, 0, 
newSplitfileDataBlocks, 0, splitfileDataBlocks.length);
                        if(splitfileCheckBlocks.length > 0)
                                System.arraycopy(splitfileCheckBlocks, 0, 
newSplitfileCheckBlocks, 0, splitfileCheckBlocks.length);
@@ -130,8 +130,8 @@
                                // Create a segment. Give it its keys.
                                int copyDataBlocks = 
Math.min(splitfileDataBlocks.length - dataBlocksPtr, blocksPerSegment);
                                int copyCheckBlocks = 
Math.min(splitfileCheckBlocks.length - checkBlocksPtr, checkBlocksPerSegment);
-                               FreenetURI[] dataBlocks = new 
FreenetURI[copyDataBlocks];
-                               FreenetURI[] checkBlocks = new 
FreenetURI[copyCheckBlocks];
+                               ClientCHK[] dataBlocks = new 
ClientCHK[copyDataBlocks];
+                               ClientCHK[] checkBlocks = new 
ClientCHK[copyCheckBlocks];
                                if(copyDataBlocks > 0)
                                        System.arraycopy(splitfileDataBlocks, 
dataBlocksPtr, dataBlocks, 0, copyDataBlocks);
                                if(copyCheckBlocks > 0)

Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2007-02-16 20:02:07 UTC (rev 11819)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2007-02-16 20:21:52 UTC (rev 11820)
@@ -17,6 +17,8 @@
 import freenet.client.MetadataParseException;
 import freenet.client.SplitfileBlock;
 import freenet.keys.CHKBlock;
+import freenet.keys.ClientCHK;
+import freenet.keys.ClientKey;
 import freenet.keys.FreenetURI;
 import freenet.support.Logger;
 import freenet.support.api.Bucket;
@@ -30,8 +32,8 @@

        private static boolean logMINOR;
        final short splitfileType;
-       final FreenetURI[] dataBlocks;
-       final FreenetURI[] checkBlocks;
+       final ClientCHK[] dataBlocks;
+       final ClientCHK[] checkBlocks;
        final ClientGetState[] dataBlockStatus;
        final ClientGetState[] checkBlockStatus;
        final MinimalSplitfileBlock[] dataBuckets;
@@ -56,7 +58,7 @@
        private int fetchedBlocks;
        private final FailureCodeTracker errors;

-       public SplitFileFetcherSegment(short splitfileType, FreenetURI[] 
splitfileDataBlocks, FreenetURI[] splitfileCheckBlocks, SplitFileFetcher 
fetcher, ArchiveContext archiveContext, FetchContext fetchContext, long 
maxTempLength, int recursionLevel) throws MetadataParseException, 
FetchException {
+       public SplitFileFetcherSegment(short splitfileType, ClientCHK[] 
splitfileDataBlocks, ClientCHK[] splitfileCheckBlocks, SplitFileFetcher 
fetcher, ArchiveContext archiveContext, FetchContext fetchContext, long 
maxTempLength, int recursionLevel) throws MetadataParseException, 
FetchException {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.parentFetcher = fetcher;
                this.errors = new FailureCodeTracker(false);
@@ -360,16 +362,11 @@
                                        // Already fetched?
                                        continue;
                                }
-                               // FIXME maybe within a non-FECced splitfile at 
least?
-                               if(dataBlocks[i].getKeyType().equals("USK")) {
-                                       fail(new 
FetchException(FetchException.INVALID_METADATA, "Cannot have USKs within a 
splitfile!"));
-                                       return;
-                               }
                                if(dataBlockStatus[i] != null) {
                                        Logger.error(this, "Scheduling twice? 
dataBlockStatus["+i+"] = "+dataBlockStatus[i]);
                                } else {
                                        dataBlockStatus[i] =
-                                               (ClientGetState) 
SingleFileFetcher.create(parentFetcher.parent, this, null, dataBlocks[i], 
blockFetchContext, archiveContext, blockFetchContext.maxNonSplitfileRetries, 
recursionLevel, true, i, true, null, false);
+                                               new 
SimpleSingleFileFetcher(dataBlocks[i], 
blockFetchContext.maxNonSplitfileRetries, blockFetchContext, 
parentFetcher.parent, this, true, i);
                                }
                        }
                        for(int i=0;i<checkBlocks.length;i++) {
@@ -377,15 +374,10 @@
                                        // Already fetched?
                                        continue;
                                }
-                               // FIXME maybe within a non-FECced splitfile at 
least?
-                               if(checkBlocks[i].getKeyType().equals("USK")) {
-                                       fail(new 
FetchException(FetchException.INVALID_METADATA, "Cannot have USKs within a 
splitfile!"));
-                                       return;
-                               }
                                if(checkBlockStatus[i] != null) {
                                        Logger.error(this, "Scheduling twice? 
dataBlockStatus["+i+"] = "+checkBlockStatus[i]);
                                } else checkBlockStatus[i] =
-                                       (ClientGetState) 
SingleFileFetcher.create(parentFetcher.parent, this, null, checkBlocks[i], 
blockFetchContext, archiveContext, blockFetchContext.maxNonSplitfileRetries, 
recursionLevel, true, dataBlocks.length+i, false, null, false);
+                                       new 
SimpleSingleFileFetcher(checkBlocks[i], 
blockFetchContext.maxNonSplitfileRetries, blockFetchContext, 
parentFetcher.parent, this, true, i);
                        }
                        for(int i=0;i<dataBlocks.length;i++) {
                                if(dataBlockStatus[i] != null)
@@ -394,9 +386,6 @@
                        for(int i=0;i<checkBlocks.length;i++)
                                if(checkBlockStatus[i] != null)
                                        checkBlockStatus[i].schedule();
-               } catch (MalformedURLException e) {
-                       // Invalidates the whole splitfile
-                       fail(new FetchException(FetchException.INVALID_URI, 
"Invalid URI in splitfile: "+e));
                } catch (Throwable t) {
                        Logger.error(this, "Caught "+t+" scheduling "+this, t);
                        fail(new FetchException(FetchException.INTERNAL_ERROR, 
t));

Modified: trunk/freenet/src/freenet/node/SendableGet.java
===================================================================
--- trunk/freenet/src/freenet/node/SendableGet.java     2007-02-16 20:02:07 UTC 
(rev 11819)
+++ trunk/freenet/src/freenet/node/SendableGet.java     2007-02-16 20:21:52 UTC 
(rev 11820)
@@ -4,7 +4,6 @@
 package freenet.node;

 import freenet.client.FetchContext;
-import freenet.client.async.BaseClientGetter;
 import freenet.client.async.ClientRequester;
 import freenet.keys.ClientCHK;
 import freenet.keys.ClientKey;


Reply via email to