From 07325fec58aba45df8dd0d313a053c109f3bb98e Mon Sep 17 00:00:00 2001
From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch>
Date: Sat, 3 Feb 2018 15:58:16 +0100
Subject: [PATCH] Store the overall progress in percent in the status.

Refers to #26
---
 ATxCommon/Serializables/ServiceStatus.cs | 15 +++++++++++++++
 ATxService/RoboCommand.cs                | 11 +++++++----
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/ATxCommon/Serializables/ServiceStatus.cs b/ATxCommon/Serializables/ServiceStatus.cs
index 66e8b8c..11536b1 100644
--- a/ATxCommon/Serializables/ServiceStatus.cs
+++ b/ATxCommon/Serializables/ServiceStatus.cs
@@ -32,6 +32,8 @@ namespace ATxCommon.Serializables
         private long _transferredBytesCompleted;
         private long _transferredBytesCurrentFile;
 
+        private int _currentTransferPercent;
+
 
         #region constructor, serializer and deserializer
 
@@ -44,6 +46,7 @@ namespace ATxCommon.Serializables
             _transferInProgress = false;
             _transferredBytesCompleted = 0;
             _transferredBytesCurrentFile = 0;
+            _currentTransferPercent = 0;
         }
 
         public void Serialize() {
@@ -254,6 +257,18 @@ namespace ATxCommon.Serializables
             }
         }
 
+        /// <summary>
+        /// The progress of the current transfer in percent.
+        /// </summary>
+        public int CurrentTransferPercent {
+            get { return _currentTransferPercent; }
+            set {
+                _currentTransferPercent = value;
+                Log.Trace("CurrentTransferPercent was updated ({0}).", value);
+                Serialize();
+            }
+        }
+
         #endregion getter / setter methods
         
 
diff --git a/ATxService/RoboCommand.cs b/ATxService/RoboCommand.cs
index 3c60000..df740f1 100644
--- a/ATxService/RoboCommand.cs
+++ b/ATxService/RoboCommand.cs
@@ -159,6 +159,7 @@ namespace ATxService
             _transferState = TxState.Stopped;
             _status.TransferredBytesCompleted = 0;
             _status.TransferredBytesCurrentFile = 0;
+            _status.CurrentTransferPercent = 0;
             _txCurFileSize = 0;
             _txCurFileProgress = 0;
             _roboCommand.Dispose();
@@ -180,12 +181,14 @@ namespace ATxService
 
             _txCurFileProgress = progress;
             _status.TransferredBytesCurrentFile = (long) (_txCurFileSize * e.CurrentFileProgress / 100);
-            var overallProgress = ((double)(_status.TransferredBytesCompleted + _status.TransferredBytesCurrentFile) /
-                                   _status.CurrentTransferSize) * 100;
-            Log.Info("Current transfer at {0:0}%", overallProgress);
+            // NOTE: the (double) is required to make the division work on float which can then 
+            // eventually be cast into an (int) after multiplying it by 100:
+            _status.CurrentTransferPercent = (int)((_status.TransferredBytesCompleted + _status.TransferredBytesCurrentFile) * 100 /
+                                   _status.CurrentTransferSize);
+            Log.Info("Current transfer at {0}%", _status.CurrentTransferPercent);
             Log.Trace("Tx progress: complete [{0}] - current [{1}] - combined {2:0}%",
                 _status.TransferredBytesCompleted, _status.TransferredBytesCurrentFile,
-                overallProgress);
+                _status.CurrentTransferPercent);
             Log.Trace("Current file transfer progress {0}%", progress);
         }
 
-- 
GitLab