Author: toad
Date: 2008-11-21 19:12:03 +0000 (Fri, 21 Nov 2008)
New Revision: 23786
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Only ignore the last block on the last segment. Marginal performance gain.
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-11-21 14:27:53 UTC (rev 23785)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-11-21 19:12:03 UTC (rev 23786)
@@ -141,7 +141,7 @@
if(splitfileCheckBlocks.length > 0)
System.arraycopy(splitfileCheckBlocks, 0,
newSplitfileCheckBlocks, 0, splitfileCheckBlocks.length);
segments[0] = new
SplitFileFetcherSegment(splitfileType, newSplitfileDataBlocks,
newSplitfileCheckBlocks,
- this, archiveContext, fetchContext,
maxTempLength, recursionLevel);
+ this, archiveContext, fetchContext,
maxTempLength, recursionLevel, true);
} else {
int dataBlocksPtr = 0;
int checkBlocksPtr = 0;
@@ -158,7 +158,7 @@
dataBlocksPtr += copyDataBlocks;
checkBlocksPtr += copyCheckBlocks;
segments[i] = new
SplitFileFetcherSegment(splitfileType, dataBlocks, checkBlocks, this,
archiveContext,
- fetchContext, maxTempLength,
recursionLevel+1);
+ fetchContext, maxTempLength,
recursionLevel+1, i == segments.length-1);
}
if(dataBlocksPtr != splitfileDataBlocks.length)
throw new
FetchException(FetchException.INVALID_METADATA, "Unable to allocate all data
blocks to segments - buggy or malicious inserter");
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-11-21 14:27:53 UTC (rev 23785)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-11-21 19:12:03 UTC (rev 23786)
@@ -67,12 +67,14 @@
final FailureCodeTracker errors;
private boolean finishing;
private boolean scheduled;
+ private final boolean ignoreLastDataBlock;
private FECCodec codec;
- public SplitFileFetcherSegment(short splitfileType, ClientCHK[]
splitfileDataKeys, ClientCHK[] splitfileCheckKeys, SplitFileFetcher fetcher,
ArchiveContext archiveContext, FetchContext fetchContext, long maxTempLength,
int recursionLevel) throws MetadataParseException, FetchException {
+ public SplitFileFetcherSegment(short splitfileType, ClientCHK[]
splitfileDataKeys, ClientCHK[] splitfileCheckKeys, SplitFileFetcher fetcher,
ArchiveContext archiveContext, FetchContext fetchContext, long maxTempLength,
int recursionLevel, boolean ignoreLastDataBlock) throws MetadataParseException,
FetchException {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
this.parentFetcher = fetcher;
+ this.ignoreLastDataBlock = ignoreLastDataBlock;
this.errors = new FailureCodeTracker(false);
this.archiveContext = archiveContext;
this.splitfileType = splitfileType;
@@ -494,7 +496,8 @@
SplitFileFetcherSubSegment seg = getSubSegment(0);
for(int
i=0;i<dataRetries.length+checkRetries.length;i++) {
// FIXME NOT FETCHING LAST BLOCK
- if(i == dataRetries.length - 1) continue;
+ if(ignoreLastDataBlock &&
+ i == dataRetries.length - 1)
continue;
seg.add(i, true);
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs