private static FdaStatsDTO ConvertSingle(Statistics stats) { // it's assumed that statistics calculated for successful job, so all timings are present var downloadSec = stats.TimeInstructionsStarted.Value.Subtract(stats.TimeDownloadStarted.Value).TotalSeconds; var processingSec = stats.TimeInstructionsEnded.Value.Subtract(stats.TimeInstructionsStarted.Value).TotalSeconds; var uploadSec = stats.TimeUploadEnded.Value.Subtract(stats.TimeInstructionsEnded.Value).TotalSeconds; var result = new FdaStatsDTO { Queueing = stats.TimeDownloadStarted.Value.Subtract(stats.TimeQueued).TotalSeconds, Download = downloadSec, Processing = processingSec, Upload = uploadSec, Total = stats.TimeFinished.Value.Subtract(stats.TimeQueued).TotalSeconds, Credits = (downloadSec + processingSec + uploadSec) * CreditsPerSecond }; return(result); }
private static FdaStatsDTO Convert(ICollection <Statistics> stats) { if (stats == null || stats.Count == 0) { return(null); } var sum = new FdaStatsDTO(); foreach (var s in stats) { var current = ConvertSingle(s); sum.Queueing = sum.Queueing.GetValueOrDefault() + current.Queueing; sum.Download = sum.Download.GetValueOrDefault() + current.Download; sum.Processing = sum.Processing.GetValueOrDefault() + current.Processing; sum.Upload = sum.Upload.GetValueOrDefault() + current.Upload; sum.Total = sum.Total.GetValueOrDefault() + current.Total; sum.Credits += current.Credits; } return(sum); }