示例#1
0
        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);
        }
示例#2
0
        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);
        }