private void dataGrid_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { int currentMouseOverRow = dataGrid.HitTest(e.X, e.Y).RowIndex; if (currentMouseOverRow >= 0) { Dota2Server server = (Dota2Server)dataGrid.Rows[currentMouseOverRow].DataBoundItem; ContextMenu m = new ContextMenu(); MenuItem itemRefresh = new MenuItem(string.Format("Refresh ping")); itemRefresh.Click += (sender2, e2) => ContextMenuItemRefresh(server); m.MenuItems.Add(itemRefresh); MenuItem itemDetail = new MenuItem(string.Format("Detail Refresh ping")); itemDetail.Click += (sender2, e2) => ContextMenuItemDetailRefresh(server); m.MenuItems.Add(itemDetail); m.Show(dataGrid, new Point(e.X, e.Y)); } } }
internal void RefreshPing(Dota2Server server, bool isDetailed) { try { lock (_lock) { ResetStats(); int tries = isDetailed ? DetailTries : NormalTries; Ping pingSender = new Ping(); for (int i = 0; i < tries; i++) { _totalPacketsSent++; PingReply reply = pingSender.Send(server.Address, Timeout); if (reply != null && reply.Status == IPStatus.Success) { _totalPacketsReceived++; _totalRoundTripTime += reply.RoundtripTime; } } if (_totalPacketsReceived > 0) { _ping = (_totalRoundTripTime / _totalPacketsReceived); } else { _ping = int.MaxValue; } if (_totalPacketsSent > 0) { _packetLoss = CalculatePacketLoss(); } else { _packetLoss = 100; } if (isDetailed) { MessageBox.Show("Server Name \t\t = " + server.Name + "\r\n" + "Total Packets sent \t\t = " + _totalPacketsSent + " packets \r\n" + "Total Packets Received \t = " + _totalPacketsReceived + " packets \r\n" + "Total Time taken \t\t = " + _totalRoundTripTime + " mili-Seconds \r\n" + "Average Ping \t\t = " + _ping + " mili-Seconds \r\n" + "Packet Loss \t\t = " + _packetLoss + " % \r\n" , "Detail Ping Results", MessageBoxButtons.OK); } ConsoleWrite("Request ping " + server.Name + " Completed.", Color.Lime); } } catch (Exception e) { _ping = int.MaxValue; _packetLoss = 100; if (ConfigurationSettings.AppSettings["IsErrorEnabled"] == "true") { ConsoleWrite("Error occured while requesting ping " + server.Name + " " + e, Color.Red); } else { ConsoleWrite("Error occured while requesting ping " + server.Name + " " + e.Message, Color.Red); } } ResetStats(); UpdateData(); }
internal void RefreshPing(Dota2Server server, bool isDetailed) { try { lock (_lock) { ResetStats(); int tries = isDetailed ? DetailTries : NormalTries; Ping pingSender = new Ping(); for (int i = 0; i < tries; i++) { _totalPacketsSent++; PingReply reply = pingSender.Send(server.Address, Timeout); if (reply != null && reply.Status == IPStatus.Success) { _totalPacketsReceived++; _totalRoundTripTime += reply.RoundtripTime; } } if (_totalPacketsReceived > 0) { _ping = (_totalRoundTripTime / _totalPacketsReceived); } else { _ping = int.MaxValue; } if (_totalPacketsSent > 0) { _packetLoss = CalculatePacketLoss(); } else { _packetLoss = 100; } if (isDetailed) { MessageBox.Show("Server Name \t\t = " + server.Name + "\r\n" + "Total Packets sent \t\t = " + _totalPacketsSent + " packets \r\n" + "Total Packets Received \t = " + _totalPacketsReceived + " packets \r\n" + "Total Time taken \t\t = " + _totalRoundTripTime + " mili-Seconds \r\n" + "Average Ping \t\t = " + _ping + " mili-Seconds \r\n" + "Packet Loss \t\t = " + _packetLoss + " % \r\n" , "Detail Ping Results", MessageBoxButtons.OK); } ConsoleWrite("Request ping " + server.Name + " Completed.", Color.Lime); } } catch (Exception e) { _ping = int.MaxValue; _packetLoss = 100; if (ConfigurationSettings.AppSettings["IsErrorEnabled"] == "true") ConsoleWrite("Error occured while requesting ping " + server.Name + " " + e, Color.Red); else ConsoleWrite("Error occured while requesting ping " + server.Name + " " + e.Message, Color.Red); } ResetStats(); UpdateData(); }
private void ContextMenuItemDetailRefresh(Dota2Server server) { ConsoleWrite("Requesting ping " + server.Name, Color.Lime); Application.UseWaitCursor = true; server.RefreshPing(true); }
private void ContextMenuItemDetailRefresh(Dota2Server server) { ConsoleWrite("Requesting ping " + server.Name, Color.Lime); Application.UseWaitCursor = true; server.RefreshPing(true); }