private static async Task <IEnumerable <Server> > SelectServers() { Console.WriteLine(); Console.WriteLine("Selecting best server by distance..."); var servers = settings.Servers.Take(10).ToList(); foreach (var server in servers) { server.Latency = await client.TestServerLatencyAsync(server); PrintServerDetails(server); } return(servers); }
private async Task <Speedtest> RunSpeedtest(DateTimeOffset timestamp) { await _semaphore.WaitAsync(); IsRunning = true; RunStarted?.Invoke(); var test = new Speedtest { Timestamp = timestamp }; try { var settings = await _client.GetSettingsAsync(); var server = settings.Servers .OrderBy(s => s.Distance) .FirstOrDefault(); test.ServerLatency = await _client.TestServerLatencyAsync(server); test.DownloadSpeed = await _client.TestDownloadSpeedAsync(server); test.UploadSpeed = await _client.TestUploadSpeedAsync(server); _logger.LogInformation($"Test ran successfully - Time: {timestamp}, Latency: {test.ServerLatency} ms, " + $"Download: {test.DownloadSpeed / 1000} Mbps, Upload: {test.UploadSpeed / 1000} Mbps"); using var scope = _services.CreateScope(); var context = scope.ServiceProvider.GetRequiredService <AppDbContext>(); context.Speedtests.Add(test); await context.SaveChangesAsync(); } finally { IsRunning = false; RunCompleted?.Invoke(test); _semaphore.Release(); } return(test); }
private static IEnumerable <Server> SelectServers() { Debug.WriteLine("__"); Debug.WriteLine("Selecting best server by distance..."); List <Server> servers; if (clientCountry != null) { servers = settings.Servers.Where(s => s.Country.Equals(clientCountry)).Take(10).ToList(); } else { servers = settings.Servers.Where(s => s.Country.Equals(DefaultCountry)).Take(10).ToList(); } foreach (var server in servers) { server.Latency = client.TestServerLatencyAsync(server).GetAwaiter().GetResult(); PrintServerDetails(server); } return(servers); }