public ResultObj Ping() { ResultObj result = new ResultObj(); try { PingParams pingParams = _pingParams; PingIt pingIt; StopNetStats(); for (int i = 0; i < pingParams.PingBurstNumber; i++) { foreach (MonitorPingInfo monitorPingInfo in _monitorPingInfos) { // We must abort pinging as soon as possible to stop DB write errors. if (_isSaving) { Console.WriteLine("Aborting MonitorPingService.Ping save in progress "); result.Message = "Aborting MonitorPingService.Ping save in progress "; result.Success = false; _isPinging = false; return(result); } _isPinging = true; pingIt = new PingIt(monitorPingInfo, pingParams); pingIt.go(); if (pingIt.RoundTrip > _pingParams.LogStatsThreshold) { Console.WriteLine("Ping threshold met for IP Address : " + monitorPingInfo.IPAddress + " RoundTrip time was : " + pingIt.RoundTrip); StartNetStats(); } //Console.WriteLine("IP Address : " + monitorPingInfo.IPAddress); //Console.WriteLine("Status : " + monitorPingInfo.MonitorStatus); //Console.WriteLine("Trip Time : " + monitorPingInfo.RoundTripTimeAverage); } Thread.Sleep(pingParams.PingBurstDelay); } result.Message = "MonitorPingService.Ping Success"; result.Success = true; } catch (Exception e) { result.Message = "MonitorPingService.Ping Failed : Error was : " + e.Message; result.Success = false; } finally { _isPinging = false; } return(result); }
public void init(bool initMonitorPingInfos) { _pingParams = new PingParams(); _pingParams.BufferLength = _config.GetValue <int>("PingPacketSize"); _pingParams.TimeOut = _config.GetValue <int>("PingTimeOut"); _pingParams.PingBurstDelay = _config.GetValue <int>("PingBurstDelay"); _pingParams.PingBurstNumber = _config.GetValue <int>("PingBurstNumber"); _pingParams.Schedule = _config.GetValue <string>("PingSchedule"); _pingParams.SaveSchedule = _config.GetValue <string>("SaveSchedule"); _pingParams.AlertSchedule = _config.GetValue <string>("AlertSchedule"); _pingParams.AlertThreshold = _config.GetValue <int>("PingAlertThreshold"); _pingParams.DisableNetStatService = _config.GetValue <bool>("DisableNetStatService"); _pingParams.LogStatsThreshold = _config.GetValue <int>("LogNetworkStatsThreshold"); _pingParams.NetStatsDeviceID = _config.GetValue <int>("NetStatsDeviceID"); if (initMonitorPingInfos) { // init fully on first run. _monitorPingInfos = new List <MonitorPingInfo>(); _monitorIPs = _config.GetSection("MonitorIps").GetChildren().ToArray().Select(c => c.Value).ToArray(); MonitorPingInfo monitorPingInfo; for (int i = 0; i < _monitorIPs.Length; i++) { monitorPingInfo = new MonitorPingInfo(); monitorPingInfo.ID = i + 1; monitorPingInfo.IPAddress = _monitorIPs[i]; _monitorPingInfos.Add(monitorPingInfo); } } else { List <MonitorPingInfo> newMonPingInfos = new List <MonitorPingInfo>(); MonitorPingInfo newMonPingInfo; StatusObj status; int i = 0; // Copy Alert status before init. foreach (MonitorPingInfo monPingInfo in _monitorPingInfos) { status = new StatusObj(); status.AlertFlag = monPingInfo.MonitorStatus.AlertFlag; status.AlertSent = monPingInfo.MonitorStatus.AlertSent; status.DownCount = monPingInfo.MonitorStatus.DownCount; status.IsUp = monPingInfo.MonitorStatus.IsUp; newMonPingInfo = new MonitorPingInfo(); newMonPingInfo.ID = i + 1; newMonPingInfo.IPAddress = _monitorIPs[i]; newMonPingInfo.MonitorStatus = status; newMonPingInfos.Add(newMonPingInfo); i++; } _monitorPingInfos = new List <MonitorPingInfo>(newMonPingInfos); } }