Progress reporting during upload changed to occur every second
[pithos-ms-client] / trunk / Pithos.Network / FileBlockContent.cs
index 194c25d..14034af 100644 (file)
@@ -62,6 +62,8 @@ namespace Pithos.Network
                 //Make sure we read only up to the block size\r
                 var size = buffer_size > remainder ? remainder : buffer_size;\r
 \r
+                int timerTotal = 0;\r
+\r
                 watch.Start();\r
                 while(remainder>0 && 0<(read=await fileStream.ReadAsync(buffer, 0, (int)size).ConfigureAwait(false)))\r
                 {\r
@@ -71,13 +73,23 @@ namespace Pithos.Network
                     total += read;\r
                     remainder -= read;\r
 \r
-                    var speed = 1000 * read / (double)watch.ElapsedMilliseconds;\r
-                    var percentage = Convert.ToInt32(100*total/(double) _blockSize);\r
-                    _progress.Report(new UploadArgs(percentage, null, total, _blockSize, 0, 0,speed));\r
-\r
+                    //Calculate the new size, \r
                     size = buffer_size > remainder ? remainder : buffer_size;\r
+\r
+                    timerTotal += read;\r
+                    //Only report every second\r
+                    if (watch.ElapsedMilliseconds > 1000)\r
+                    {\r
+\r
+                        var speed = 1000*timerTotal/(double) watch.ElapsedMilliseconds;\r
+                        var percentage = Convert.ToInt32(100*total/(double) _blockSize);\r
+                        _progress.Report(new UploadArgs(percentage, null, total, _blockSize, 0, 0, speed));\r
+                        //Reset the counter and total\r
+                        timerTotal = 0;\r
+                        watch.Reset();\r
+                    }\r
                     \r
-                    watch.Restart();\r
+                    watch.Start();\r
                 }\r
             }\r
 \r