static public void AddIP(xIP IP)// { if (!IPs.Contains(IP)) { IPs.Add(IP); } }
static public void lvIPs_Renew(ListViewItem lvItem, xIP IP)//Ok { if (IP == null || lvItem == null) { return; } lvItem.Checked = IP.Onn; lvItem.SubItems[0].Text = IP.Address; lvItem.SubItems[1].Text = IP.Period.ToString(); lvItem.SubItems[2].Text = IP.TimeNext.ToString(Options.TIME_FORMAT); lvItem.SubItems[3].Text = "-//-"; lvItem.SubItems[4].Text = "-//-"; lvItem.ImageIndex = 0; if (IP.Pings[0] == null) { return; } if (IP.Pings[0].State != PingStates.NotSend) { lvItem.SubItems[3].Text = IP.TimeLast.ToString(Options.TIME_FORMAT); if (IP.Pings[0].State == PingStates.Send) { lvItem.SubItems[4].Text = Options.LangCur.lIPPingSend; lvItem.ImageIndex = 0; } else if (IP.Pings[0].State == PingStates.Cancelled) { lvItem.SubItems[4].Text = Options.LangCur.lIPPingCancelled; lvItem.ImageIndex = 5; } else if (IP.Pings[0].Error != "") { lvItem.SubItems[4].Text = IP.Pings[0].Error; lvItem.ImageIndex = 5; } else { lvItem.SubItems[4].Text = IP.Pings[0].TripTime.ToString() + " (" + IP.Pings[0].Replayer + ")"; if (IP.Pings[0].TripTime < IP.TimeOutGreen) { lvItem.ImageIndex = 1; } else if (IP.Pings[0].TripTime < IP.TimeOutGreen + IP.TimeOutYellow) { lvItem.ImageIndex = 2; } else if (IP.Pings[0].TripTime < IP.TimeOutGreen + IP.TimeOutYellow + IP.TimeOutRed) { lvItem.ImageIndex = 3; } else { lvItem.ImageIndex = 4; } } } }
static public void timerPing_Tick(object sender, EventArgs e)//! { if (IPs.Count < 1) { return; } // Init loop if (IPs.Count <= LastSendIPIdx) { LastSendIPIdx = 0; } int count = 0; xIP startIP = IPs[LastSendIPIdx]; int SendersIdx = PingSenders.Length - 1; do { // Find free sender for (; 0 <= SendersIdx; SendersIdx--) { if (PingIPsIDs[SendersIdx] == null) { break; } } // No free sender if (SendersIdx < 0) { break; } // Send xIP IP = IPs[LastSendIPIdx]; if (IP.AddPing(DateTime.Now)) { PingIPsIDs[SendersIdx] = IP; PingSenders[SendersIdx].SendPingAsync( IP.Address, IP.TimeOutGreen + IP.TimeOutYellow + IP.TimeOutRed, Encoding.ASCII.GetBytes(IP.ID.ToString()), PingOptions); } // Step LastSendIPIdx++; count++; // Finish? if (IPs.Count <= LastSendIPIdx) { LastSendIPIdx = 0; } if (startIP == IPs[LastSendIPIdx]) { break; } } while (count < PingCount); }
public IPEditForm(xIP ip, xObject owner)//Ok { InitializeComponent(); //Main tpPings.Text = Options.LangCur.lIPTabMain; lblAddress.Text = Options.LangCur.lIPAddress; lblName.Text = Options.LangCur.lEOName; lblPeriod.Text = Options.LangCur.lIPPeriod; lblTimeNext.Text = Options.LangCur.lIPTimeNext; lblTimeOutGreen.Text = Options.LangCur.lIPTimeOutGreen; lblTimeOutYellow.Text = Options.LangCur.lIPTimeOutYellow; lblTimeOutRed.Text = Options.LangCur.lIPTimeOutRed; // Fill if (ip == null) { Text = Options.LangCur.lIPTitleAdd; ip = new xIP(owner); } else { Text = Options.LangCur.lIPTitleEdit; } IP = ip; tbName.Text = IP.Name; tbDescription.Text = IP.Description; tbAddress.Text = IP.Address; // nudTimeOutGreen.Value = IP.TimeOutGreen; nudTimeOutYellow.Value = IP.TimeOutYellow; nudTimeOutRed.Value = IP.TimeOutRed; // dtpDateNext.Value = IP.TimeNext; dtpDateNext.Checked = IP.Onn; nudPeriod.Value = IP.Period; // Pings tpPings.Text = Options.LangCur.lIPTabPings; clmSendTime.Text = Options.LangCur.lIPColumSendTime; clmState.Text = Options.LangCur.lIPColumState; clmTripTime.Text = Options.LangCur.lIPColumTripTime; toolTip.SetToolTip(btnClearPings, Options.LangCur.hIPClearPings); // Fill for (int i = 0; i < IP.PingsCount; i++) { if (IP.Pings[i].State != PingStates.NotSend) { Share.lvPings_Add(lvPings, IP, IP.Pings[i]); } } IP.Pings_lv = lvPings; // Push window sizes tabControl.Width = tlpTimers.Width + 16; }
static public void RemoveIP(xIP IP)// { int idx = IPs.IndexOf(IP); if (0 <= idx) { if (idx < LastSendIPIdx) { LastSendIPIdx--; } } IPs.Remove(IP); }
static public void lvIPs_Add(ListView lvIPs, xIP IP, ref ListViewItem target_lvItem)//Ok { if (lvIPs == null || IP == null) { return; } target_lvItem = lvIPs.Items.Add(""); target_lvItem.SubItems.Add(""); target_lvItem.SubItems.Add(""); target_lvItem.SubItems.Add(""); target_lvItem.SubItems.Add(""); lvIPs_Renew(target_lvItem, IP); target_lvItem.Tag = IP; }
private static void PingCallback(object sender, PingCompletedEventArgs e)//! { // Find sender index int SendersIdx = PingSenders.Length - 1; for (; 0 <= SendersIdx; SendersIdx--) { if (PingSenders[SendersIdx] == sender) { break; } } // Error if (SendersIdx < 0) { return; } // Get IP record xIP IP = PingIPsIDs[SendersIdx]; if (IPs.Contains(IP)) { if (IP.Pings[0] != null) { // Update record if (e.Cancelled) { IP.Pings[0].State = PingStates.Cancelled; } else { if (e.Error != null) { IP.Pings[0].Error = e.Error.Message; } IP.Pings[0].State = PingStates.Replayed; IP.Pings[0].Replayer = e.Reply.Address.ToString(); IP.Pings[0].Status = e.Reply.Status; IP.Pings[0].TripTime = (int)e.Reply.RoundtripTime; // Update showed info Share.lvIPs_Renew(IP.Obj_lvItem, IP); Share.lvIPs_Renew(IP.Map_lvItem, IP); Share.lvPings_Renew(IP.Pings_lv?.Items[0], IP, IP.Pings[0]); } } } PingIPsIDs[SendersIdx] = null; }
static public void lvPings_Renew(ListViewItem lvItem, xIP IP, xPing Ping)//Ok { if (lvItem == null || Ping == null) { return; } lvItem.SubItems[0].Text = Ping.SendTime.ToString(Options.TIME_FORMAT); lvItem.SubItems[2].Text = ""; if (Ping.State == PingStates.Send) { lvItem.SubItems[1].Text = Options.LangCur.lIPPingSend; lvItem.ImageIndex = 0; } else if (Ping.State == PingStates.Cancelled) { lvItem.SubItems[1].Text = Options.LangCur.lIPPingCancelled; lvItem.ImageIndex = 5; } else if (Ping.Error != "") { lvItem.SubItems[1].Text = Ping.Error; lvItem.ImageIndex = 5; } else { lvItem.SubItems[1].Text = Ping.Replayer; lvItem.SubItems[2].Text = Ping.TripTime.ToString(); if (Ping.TripTime < IP.TimeOutGreen) { lvItem.ImageIndex = 1; } else if (Ping.TripTime < IP.TimeOutGreen + IP.TimeOutYellow) { lvItem.ImageIndex = 2; } else if (Ping.TripTime < IP.TimeOutGreen + IP.TimeOutYellow + IP.TimeOutRed) { lvItem.ImageIndex = 3; } else { lvItem.ImageIndex = 4; } } }
static public void lvPings_Add(ListView lvPings, xIP IP, xPing Ping)//Ok { if (lvPings == null || Ping == null) { return; } var ping_item = lvPings.Items.Insert(0, ""); ping_item.SubItems.Add(""); ping_item.SubItems.Add(""); ping_item.SubItems.Add(""); if (IP.PingsCount < lvPings.Items.Count) { lvPings.Items.RemoveAt(IP.PingsCount); } lvPings_Renew(ping_item, IP, Ping); ping_item.Tag = Ping; }
static public void lvIPs_Edit(ListView lvIPs)//Ok { if (lvIPs == null) { return; } if (lvIPs.SelectedItems.Count < 1) { return; } xIP ip = (lvIPs.SelectedItems[0].Tag as xIP); if (ip == null) { return; } new IPEditForm(ip, null).ShowDialog(); lvIPs_Renew(ip.Obj_lvItem, ip); lvIPs_Renew(ip.Map_lvItem, ip); }