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

Reply via email to