示例#1
0
        public async Task Tick()
        {
            var urlsToPing = await _urlRepo.GetAll();

            var urls        = urlsToPing.Select(c => c.Url);
            var pingTasks   = (from url in urls select _httpClientPinger.Ping(url)).ToList();
            var pingResults = await Task.WhenAll(pingTasks);

            foreach (var result in pingResults)
            {
                await _resultsRepo.Insert(new PenguinResult
                {
                    Url          = result.Url,
                    ResponseTime = (int)result.ResponseTime,
                    TimeStamp    = DateTimeOffset.UtcNow.DateTime
                });
            }

            var orderedByLevel = pingResults.OrderBy(c => c.Level).ToList();

            var transformedMsg = _transformer.Transform(orderedByLevel);
            await _notifier.Notify(transformedMsg);

            _log.Information(transformedMsg);
        }