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