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;