private static void SetServerToOffline(ILanPlayServer server) { server.Status = ServerStatus.Offline; server.Ping = 0; server.Version = "Unknown"; server.Online = 0; }
public async Task UpdateServerStatus(ILanPlayServer server) { Console.WriteLine($"Updating server {server.Name}"); long ping = PingHost(server.Uri.Host); if (ping == 0) { SetServerToOffline(server); return; } try { Console.WriteLine($"Sending request to {server.Name}"); using (HttpResponseMessage response = await httpClient.GetAsync(GetInfoUri(server))) { if (response.IsSuccessStatusCode) { string resultString = await response.Content.ReadAsStringAsync(); var status = JsonConvert.DeserializeObject <LanPlayServerStatus>(resultString); server.Status = ServerStatus.Online; server.Version = status.Version; server.Online = status.Online; server.Ping = ping; Console.WriteLine($"Server {server.Name} updated"); } } } catch (HttpRequestException ex) { Console.WriteLine($"Request exception to {server.Name}: {ex.Message}"); SetServerToOffline(server); return; } catch (TaskCanceledException) { Console.WriteLine($"Timed out request to {server.Name}"); SetServerToOffline(server); return; } }
private static Uri GetInfoUri(ILanPlayServer server) { return(new Uri(server.Uri, "info")); }
private void DataGrid_SelectedValueChangedAsync(object sender, EventArgs e) { currentServer = (ILanPlayServer)dataGridView1.CurrentRow?.DataBoundItem; var task = Task.Run(() => serverService.UpdateServerStatus(currentServer)); }
public void Start(ILanPlayServer server, string interfaceName) { lanPlayProcess = Process.Start(executableName, $"--relay-server-addr {server.Uri.Host}:{server.Uri.Port} --netif {interfaceName}"); lanPlayProcess.EnableRaisingEvents = true; lanPlayProcess.Exited += LanPlayProcess_Exited; }