From 20bb296dcbfe1342ab1976d3ad7c90eee208ceb4 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sun, 17 Oct 2021 14:35:14 -0700 Subject: [PATCH] Fixed upload time estimate if file is resumed. --- FileTransferStatusForm.cs | 6 +++--- FileViewer.cs | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/FileTransferStatusForm.cs b/FileTransferStatusForm.cs index d8fa0c3..06df3c6 100644 --- a/FileTransferStatusForm.cs +++ b/FileTransferStatusForm.cs @@ -86,13 +86,13 @@ namespace MeshCentralRouter double elapseTimeSeconds = DateTime.Now.Subtract(fileViewer.uploadFileStartTime).TotalMilliseconds / 1000; if (elapseTimeSeconds < 5) { mainLabel2.Text = Translate.T(Properties.Resources.EstimatingDotDotDot); } else { - double bytePerSecond = x / elapseTimeSeconds; + double bytePerSecond = (x - fileViewer.uploadFileStartPtr) / elapseTimeSeconds; double secondsLeft = Math.Round((fileViewer.uploadFileSize - x) / bytePerSecond); mainLabel2.Text = bytePerSecondToString(bytePerSecond) + ", " + secondsLeftToString(secondsLeft); } progressBar2.Maximum = fileViewer.uploadFileArray.Count; - x = (int)(int)fileViewer.uploadFileSize; + x = (int)fileViewer.uploadFileArrayPtr; if (x < 0) { x = 0; } if (x > (int)fileViewer.uploadFileArray.Count) { x = fileViewer.uploadFileArray.Count; } progressBar2.Value = fileViewer.uploadFileArrayPtr; @@ -116,7 +116,7 @@ namespace MeshCentralRouter } progressBar2.Maximum = fileViewer.downloadFileArray.Count; - x = (int)(int)fileViewer.downloadFileSize; + x = (int)fileViewer.downloadFileArrayPtr; if (x < 0) { x = 0; } if (x > (int)fileViewer.downloadFileArray.Count) { x = fileViewer.downloadFileArray.Count; } progressBar2.Value = fileViewer.downloadFileArrayPtr; diff --git a/FileViewer.cs b/FileViewer.cs index 8f7c895..b872d11 100644 --- a/FileViewer.cs +++ b/FileViewer.cs @@ -61,6 +61,7 @@ namespace MeshCentralRouter public string uploadRemotePath; public FileStream uploadFileStream = null; public long uploadFilePtr = 0; + public long uploadFileStartPtr = 0; public long uploadFileSize = 0; public DateTime uploadFileStartTime = DateTime.MinValue; public string uploadFileName = null; @@ -569,6 +570,7 @@ namespace MeshCentralRouter { // Clean up current upload uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileSize = 0; if (uploadFileStream != null) { uploadFileStream.Close(); uploadFileStream = null; } @@ -593,6 +595,7 @@ namespace MeshCentralRouter uploadLocalPath = null; uploadRemotePath = null; uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileSize = 0; uploadFileName = null; closeTransferDialog(); @@ -664,6 +667,7 @@ namespace MeshCentralRouter uploadLocalPath = null; uploadRemotePath = null; uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileSize = 0; uploadFileName = null; closeTransferDialog(); @@ -674,7 +678,7 @@ namespace MeshCentralRouter { // Files are not the same length, append the rest uploadFileStream.Seek(remoteFileSize, SeekOrigin.Begin); - uploadFilePtr = remoteFileSize; + uploadFilePtr = uploadFileStartPtr = remoteFileSize; // Send UPLOAD command with append turned on string cmd = "{\"action\":\"upload\",\"reqid\":" + (uploadFileArrayPtr + 1000) + ",\"path\":\"" + uploadRemotePath + "\",\"name\":\"" + name + "\",\"size\":" + uploadFileSize + ",\"append\":true}"; @@ -861,6 +865,7 @@ namespace MeshCentralRouter uploadLocalPath = null; uploadRemotePath = null; uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileSize = 0; if (uploadFileStream != null) { uploadFileStream.Close(); uploadFileStream = null; } @@ -1269,6 +1274,7 @@ namespace MeshCentralRouter uploadLocalPath = null; uploadRemotePath = null; uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileSize = 0; uploadFileName = null; closeTransferDialog(); @@ -1278,6 +1284,7 @@ namespace MeshCentralRouter } uploadFileSize = new FileInfo(localFilePath).Length; uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileStartTime = DateTime.Now; uploadFileName = localFileName; @@ -1316,6 +1323,7 @@ namespace MeshCentralRouter uploadLocalPath = null; uploadRemotePath = null; uploadFilePtr = 0; + uploadFileStartPtr = 0; uploadFileSize = 0; if (uploadFileStream != null) { uploadFileStream.Close(); uploadFileStream = null; } closeTransferDialog();