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"));
 }
Example #4
0
 private void DataGrid_SelectedValueChangedAsync(object sender, EventArgs e)
 {
     currentServer = (ILanPlayServer)dataGridView1.CurrentRow?.DataBoundItem;
     var task = Task.Run(() => serverService.UpdateServerStatus(currentServer));
 }
Example #5
0
 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;
 }