Author: toad
Date: 2005-11-24 22:07:04 +0000 (Thu, 24 Nov 2005)
New Revision: 7589

Added:
   trunk/freenet/src/freenet/client/events/SplitfileProgressEvent.java
Modified:
   trunk/freenet/src/freenet/client/RetryTracker.java
   trunk/freenet/src/freenet/client/RetryTrackerCallback.java
   trunk/freenet/src/freenet/client/Segment.java
   trunk/freenet/src/freenet/client/SplitFetcher.java
   trunk/freenet/src/freenet/client/SplitInserter.java
   trunk/freenet/src/freenet/node/Version.java
Log:
209:
Splitfile progress indicator.

Modified: trunk/freenet/src/freenet/client/RetryTracker.java
===================================================================
--- trunk/freenet/src/freenet/client/RetryTracker.java  2005-11-24 21:41:30 UTC 
(rev 7588)
+++ trunk/freenet/src/freenet/client/RetryTracker.java  2005-11-24 22:07:04 UTC 
(rev 7589)
@@ -204,6 +204,7 @@
         * Otherwise if we are finished, call the callback's finish method.
         */
        public synchronized void maybeStart(boolean cantCallFinished) {
+               callback.onProgress();
                if(killed) return;
                Logger.minor(this, "succeeded: "+succeededBlocks.size()+", 
target: "+targetSuccesses+
                                ", running: "+runningBlocks.size()+", levels: 
"+levels.size()+"("+curMinLevel+"-"+curMaxLevel+"), finishOnEmpty: 
"+finishOnEmpty);

Modified: trunk/freenet/src/freenet/client/RetryTrackerCallback.java
===================================================================
--- trunk/freenet/src/freenet/client/RetryTrackerCallback.java  2005-11-24 
21:41:30 UTC (rev 7588)
+++ trunk/freenet/src/freenet/client/RetryTrackerCallback.java  2005-11-24 
22:07:04 UTC (rev 7589)
@@ -13,4 +13,9 @@
         */
        void finished(SplitfileBlock[] succeeded, SplitfileBlock[] failed, 
SplitfileBlock[] fatalErrors);

+       /**
+        * When a block completes etc.
+        */
+       void onProgress();
+
 }

Modified: trunk/freenet/src/freenet/client/Segment.java
===================================================================
--- trunk/freenet/src/freenet/client/Segment.java       2005-11-24 21:41:30 UTC 
(rev 7588)
+++ trunk/freenet/src/freenet/client/Segment.java       2005-11-24 22:07:04 UTC 
(rev 7589)
@@ -249,4 +249,24 @@

                // FIXME heal check blocks too
        }
+
+       public void onProgress() {
+               parentFetcher.onProgress();
+       }
+
+       public int fetchedBlocks() {
+               return tracker.succeededBlocks().length;
+       }
+
+       public int failedBlocks() {
+               return tracker.failedBlocks().length;
+       }
+
+       public int fatallyFailedBlocks() {
+               return tracker.fatalErrorBlocks().length;
+       }
+
+       public int runningBlocks() {
+               return tracker.runningBlocks().length;
+       }
 }

Modified: trunk/freenet/src/freenet/client/SplitFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/SplitFetcher.java  2005-11-24 21:41:30 UTC 
(rev 7588)
+++ trunk/freenet/src/freenet/client/SplitFetcher.java  2005-11-24 22:07:04 UTC 
(rev 7589)
@@ -7,6 +7,7 @@
 import com.onionnetworks.fec.FECCode;
 import com.onionnetworks.fec.FECCodeFactory;

+import freenet.client.events.SplitfileProgressEvent;
 import freenet.keys.FreenetURI;
 import freenet.keys.NodeCHK;
 import freenet.support.Bucket;
@@ -232,4 +233,19 @@
                }
        }

+       public void onProgress() {
+               int totalBlocks = splitfileDataBlocks.length + 
splitfileCheckBlocks.length;
+               int fetchedBlocks = 0;
+               int failedBlocks = 0;
+               int fatallyFailedBlocks = 0;
+               int runningBlocks = 0;
+               for(int i=0;i<segments.length;i++) {
+                       fetchedBlocks += segments[i].fetchedBlocks();
+                       failedBlocks += segments[i].failedBlocks();
+                       fatallyFailedBlocks += 
segments[i].fatallyFailedBlocks();
+                       runningBlocks += segments[i].runningBlocks();
+               }
+               fctx.eventProducer.produceEvent(new 
SplitfileProgressEvent(totalBlocks, fetchedBlocks, failedBlocks, 
fatallyFailedBlocks, runningBlocks));
+       }
+
 }

Modified: trunk/freenet/src/freenet/client/SplitInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/SplitInserter.java 2005-11-24 21:41:30 UTC 
(rev 7588)
+++ trunk/freenet/src/freenet/client/SplitInserter.java 2005-11-24 22:07:04 UTC 
(rev 7589)
@@ -4,6 +4,7 @@
 import java.util.Vector;

 import freenet.client.events.GeneratedURIEvent;
+import freenet.client.events.SplitfileProgressEvent;
 import freenet.keys.FreenetURI;
 import freenet.keys.NodeCHK;
 import freenet.support.Bucket;
@@ -75,7 +76,7 @@
                        // Backwards, because the last is the shortest
                        try {
                                for(int i=segments.length-1;i>=0;i--) {
-                                       countCheckBlocks += encodeSegment(i, 
origDataBlocks.length + checkSegmentSize * i);
+                                       encodeSegment(i, origDataBlocks.length 
+ checkSegmentSize * i);
                                        Logger.minor(this, "Encoded segment 
"+i+" of "+segments.length);
                                }
                        } catch (IOException e) {
@@ -233,7 +234,10 @@
                                j = i;
                                for(int x=0;x<seg.length;x++)
                                        if(seg[x].getData() == null) throw new 
NullPointerException("In splitIntoSegs: "+x+" is null of "+seg.length+" of 
"+segNo);
-                               segs.add(new InsertSegment(splitfileAlgorithm, 
seg, blockSize, ctx.bf, getCHKOnly, segNo));
+                               InsertSegment s = new 
InsertSegment(splitfileAlgorithm, seg, blockSize, ctx.bf, getCHKOnly, segNo);
+                               countCheckBlocks += s.checkBlocks.length;
+                               segs.add(s);
+                               
                                if(i == dataBlocks) break;
                                segNo++;
                        }
@@ -252,4 +256,17 @@
                }
        }

+       public void onProgress() {
+               /* What info to report?
+                * - Total number of blocks to insert.
+                * - 
+                */
+               int totalBlocks = origDataBlocks.length + countCheckBlocks;
+               int fetchedBlocks = tracker.succeededBlocks().length;
+               int failedBlocks = tracker.countFailedBlocks();
+               int fatallyFailedBlocks = tracker.fatalErrorBlocks().length;
+               int runningBlocks = tracker.runningBlocks().length;
+               ctx.eventProducer.produceEvent(new 
SplitfileProgressEvent(totalBlocks, fetchedBlocks, failedBlocks, 
fatallyFailedBlocks, runningBlocks));
+       }
+
 }

Added: trunk/freenet/src/freenet/client/events/SplitfileProgressEvent.java
===================================================================
--- trunk/freenet/src/freenet/client/events/SplitfileProgressEvent.java 
2005-11-24 21:41:30 UTC (rev 7588)
+++ trunk/freenet/src/freenet/client/events/SplitfileProgressEvent.java 
2005-11-24 22:07:04 UTC (rev 7589)
@@ -0,0 +1,30 @@
+package freenet.client.events;
+
+public class SplitfileProgressEvent implements ClientEvent {
+
+       public static int code = 0x07;
+       
+       public final int totalBlocks;
+       public final int fetchedBlocks;
+       public final int failedBlocks;
+       public final int fatallyFailedBlocks;
+       public final int runningBlocks;
+       
+       public SplitfileProgressEvent(int totalBlocks, int fetchedBlocks, int 
failedBlocks, 
+                       int fatallyFailedBlocks, int runningBlocks) {
+               this.totalBlocks = totalBlocks;
+               this.fetchedBlocks = fetchedBlocks;
+               this.failedBlocks = failedBlocks;
+               this.fatallyFailedBlocks = fatallyFailedBlocks;
+               this.runningBlocks = runningBlocks;
+       }
+
+       public String getDescription() {
+               return "Completed "+fetchedBlocks+"/"+totalBlocks+" (failed 
"+fetchedBlocks+", fatally "+fatallyFailedBlocks+", running "+runningBlocks+")";
+       }
+
+       public int getCode() {
+               return code;
+       }
+
+}

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-24 21:41:30 UTC (rev 
7588)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-24 22:07:04 UTC (rev 
7589)
@@ -20,7 +20,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       public static final int buildNumber = 208;
+       public static final int buildNumber = 209;

        /** Oldest build of Fred we will talk to */
        public static final int lastGoodBuild = 208;


Reply via email to