diff --git a/ATxCommon/Serializables/ServiceStatus.cs b/ATxCommon/Serializables/ServiceStatus.cs index 66e8b8c43d9a5e54dc11ce347796b29504c1c0ab..11536b1043c8a4a810c89e11ea4bd44c2f8e801d 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 3c6000058f519184320dd77a79d65e52604ffe3e..df740f19113101e56964afdf02ced8834c342a48 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); }