Commit bea496aa3383b137cfc434a5dd47f88d6edad80d

Authored by Schwirg László
1 parent ca5e6d7e

v1.8.1

- pinger javítgatása
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs
... ... @@ -41,7 +41,31 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
41 41 this.PingCycleNumberOfPackages = pc.pingcyclenumofpackages;
42 42 this.PingerActiveLength = pc.pingeractivlength;
43 43 this.Configuration = pc;
  44 + if (pc.RoundTripTimeLimits!=null)
  45 + {
  46 + Pinger.RoundTripTimeLimits = pc.RoundTripTimeLimits;
  47 + Pinger.MaxRoundTripTimeoutCategory = pc.RoundTripTimeLimits.Last();
  48 + Pinger.RoundTripTimeyCategoryLimits = pc.RoundTripTimeyCategoryLimits;
  49 + }
44 50 }
  51 + /// <summary>
  52 + /// A maximális ping timeout kategória értéke
  53 + /// </summary>
  54 + public static int MaxRoundTripTimeoutCategory = 5000;
  55 +
  56 + /// <summary>
  57 + /// A FINOM válaszidő kategóriákat tartalmazza; egy válasz az i. válaszidő kategóriába tartozik, ha a pontos válaszidő nagyobb, vagy egyenlő,
  58 + /// mint az i. elem értéke, de kisebb, mint az i+1. elem értéke.A sor első elemének értéke mindig 0!!!!
  59 + /// Ha a sor értékei: 0:0,1:100,2:200,3:300,4:400,5:500, a pontos válaszidő 350, akkor ez a 2. kategóriába tartozik, ha pontos válaszidő.
  60 + /// </summary>
  61 + public static List<int> RoundTripTimeLimits = new List<int> { 0, 25, 50, 75, 100, 150, 200, 250, 300, 400, 500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 3000, 3500, 4000, 4500, Pinger.MaxRoundTripTimeoutCategory, };
  62 +
  63 + /// <summary>
  64 + /// A DURVA válaszidő kategóriákat tartalmazza; egy válasz az i. válaszidő kategóriába tartozik, ha a pontos válaszidő nagyobb, vagy egyenlő,
  65 + /// mint az i. elem értéke, de kisebb, mint az i+1. elem értéke.A sor első elemének értéke mindig 0!!!!
  66 + /// Ha a sor értékei: 0:0,1:100,2:200,3:300,4:400,5:500, a pontos válaszidő 350, akkor ez a 2. kategóriába tartozik, ha pontos válaszidő.
  67 + /// </summary>
  68 + public static List<int> RoundTripTimeyCategoryLimits = new List<int> { 0, 50, 250, 750, };
45 69  
46 70 /// <summary>
47 71 /// A pinger indítása/újraindítása; elindítja a ping ciklus időzítőt, és elkezdi/folytatja a ping státusz adatok letárolását
... ... @@ -88,6 +112,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
88 112 this.PingCycleNumberOfPackages = pc.pingcyclenumofpackages;
89 113 this.PingerActiveLength = pc.pingeractivlength;
90 114 this.History.SetHistoryLength(pc.pingerhistorylength);
  115 + if (pc.RoundTripTimeLimits != null)
  116 + {
  117 + Pinger.RoundTripTimeLimits = pc.RoundTripTimeLimits;
  118 + Pinger.MaxRoundTripTimeoutCategory = pc.RoundTripTimeLimits.Last();
  119 + Pinger.RoundTripTimeyCategoryLimits = pc.RoundTripTimeyCategoryLimits;
  120 + }
91 121 }
92 122 }
93 123 }
... ... @@ -234,12 +264,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
234 264 {
235 265 if (pingerconfig != null)
236 266 {
237   - var _pingtimeout = GetPositiveIntFromXml(PINGTIMEOUT, pingerconfig, DEFAULT_PINGTIMEOUT);
238   - var _pingcyclefrequency = GetPositiveIntFromXml(PINGCYCLEFREQUENCY, pingerconfig, 0);
239   - var _pingcyclenumofpackages = GetPositiveIntFromXml(PINGCYCLENUMOFPACKAGES, pingerconfig, DEFAULT_PINGCYCLENUMOFPACKAGES);
240   - var _pingeractivlength = GetPositiveIntFromXml(PINGERACTIVELENGTHTOSTOPPERIOD, pingerconfig, DEFAULT_PINGERACTIVELENGTH);
241   - var _pingerhistorylength = GetPositiveIntFromXml(PINGERHISTORYLENGTH, pingerconfig, DEFAULT_PINGERHISTORYLENGTH);
242   - SetValues(_pingtimeout, _pingcyclefrequency, _pingcyclenumofpackages, _pingeractivlength, _pingerhistorylength);
  267 + var _pingtimeout = GetPositiveIntFromXml(PINGTIMEOUT, pingerconfig);
  268 + var _pingcyclefrequency = GetPositiveIntFromXml(PINGCYCLEFREQUENCY, pingerconfig);
  269 + var _pingcyclenumofpackages = GetPositiveIntFromXml(PINGCYCLENUMOFPACKAGES, pingerconfig);
  270 + var _pingerlifetime = GetPositiveIntFromXml(PINGERACTIVELENGTHTOSTOPPERIOD, pingerconfig);
  271 + var _pingerhistorylength = GetPositiveIntFromXml(PINGERHISTORYLENGTH, pingerconfig);
  272 + var _roundtriptimelimits = pingerconfig.Element(ROUNDTRIPTIMELIMITS)?.Value;
  273 + var _roundtriptimecategorylimits = pingerconfig.Element(ROUNDTRIPTIMECATEGORYLIMITS)?.Value;
  274 + SetValues(_pingtimeout, _pingcyclefrequency, _pingcyclenumofpackages, _pingerlifetime, _pingerhistorylength, _roundtriptimelimits, _roundtriptimecategorylimits);
243 275 }
244 276 else { SetValues(); }
245 277 }
... ... @@ -252,9 +284,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
252 284 /// <param name="pingcyclenumofpackages">pcs</param>
253 285 /// <param name="pingeractivelength">minutes</param>
254 286 /// <param name="pingerhistorylength">minutes</param>
255   - public PingerConfig(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0)
  287 + public PingerConfig(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0,string rttlimits=null, string rttcatlimits=null)
256 288 {
257   - SetValues(pingtimeout, pingcyclefrequency, pingcyclenumofpackages, pingeractivelength, pingerhistorylength);
  289 + SetValues(pingtimeout, pingcyclefrequency, pingcyclenumofpackages, pingeractivelength, pingerhistorylength, rttlimits , rttcatlimits);
258 290 }
259 291  
260 292 /// <summary>
... ... @@ -265,15 +297,40 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
265 297 /// <param name="pingcyclenumofpackages">pcs</param>
266 298 /// <param name="pingeractivelength">minutes</param>
267 299 /// <param name="pingerhistorylength">minutes</param>
268   - private void SetValues(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0)
  300 + private void SetValues(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0, string rttlimits = null, string rttcatlimits = null)
269 301 {
270   - this.pingtimeout = pingtimeout <= 0 ? PingerConfig.DEFAULT_PINGTIMEOUT : pingtimeout;
271   - this.pingcyclefrequency = pingcyclefrequency * 1000;
272   - if (this.pingcyclefrequency < this.pingtimeout) { this.pingcyclefrequency = this.pingtimeout; }
273 302 this.pingcyclenumofpackages = pingcyclenumofpackages <= 0 ? PingerConfig.DEFAULT_PINGCYCLENUMOFPACKAGES : pingcyclenumofpackages;
274 303 this.pingeractivlength = (pingeractivelength <= 0 ? PingerConfig.DEFAULT_PINGERACTIVELENGTH : pingeractivelength) * 60 * 1000;
275 304 this.pingerhistorylength = (pingerhistorylength <= 0 ? PingerConfig.DEFAULT_PINGERHISTORYLENGTH : pingerhistorylength) * 60 * 1000;
  305 +
  306 + try
  307 + {
  308 + // ha a megadott sor nem ok, akkor nem változtat a default-on
  309 + List<int> rttl = rttlimits.Split(new char[] { ' ', ',', ';', '/', }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(x => int.Parse(x)).ToList();
  310 + if (rttl.Count <4) { throw new Exception(); }
  311 + if (rttl.ElementAt(0) != 0) { throw new Exception(); }
  312 + int lastelementvalue = -1;
  313 + for(var i=0;i<rttl.Count;i++) { if (rttl.ElementAt(i) <= lastelementvalue) { throw new Exception(); } lastelementvalue=rttl.ElementAt(i); }
  314 +
  315 + List<int> rttcl = rttcatlimits.Split(new char[] { ' ', ',', ';', '/', }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(x => int.Parse(x)).ToList();
  316 + if (rttcl.Count != 4) { throw new Exception(); }
  317 + if (rttcl.ElementAt(0) != 0) { throw new Exception(); }
  318 + lastelementvalue = -1;
  319 + for (var i = 0; i < rttcl.Count; i++) { if (rttcl.ElementAt(i) <= lastelementvalue) { throw new Exception(); } lastelementvalue = rttcl.ElementAt(i); }
  320 +
  321 + this.RoundTripTimeLimits = rttl;
  322 + this.RoundTripTimeyCategoryLimits = rttcl;
  323 + }
  324 + catch
  325 + {
  326 + this.RoundTripTimeLimits = Pinger.RoundTripTimeLimits;
  327 + this.RoundTripTimeyCategoryLimits = Pinger.RoundTripTimeyCategoryLimits;
  328 + }
  329 + this.pingtimeout = pingtimeout <= 0 ? rttlimits.Last() : pingtimeout;
  330 + this.pingcyclefrequency = pingcyclefrequency * 1000;
  331 + if (this.pingcyclefrequency < this.pingtimeout) { this.pingcyclefrequency = this.pingtimeout; }
276 332 }
  333 +
277 334 /// <summary>
278 335 /// Egy int értéket kiemel a megadott xml struktúrából, ha nincs ott a keresett érték,
279 336 /// vagy nem integer, vagy nem pozitív, akkor az alapértelmezést adja vissza
... ... @@ -282,7 +339,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
282 339 /// <param name="pingerconfig">az xml struktúra</param>
283 340 /// <param name="defaultvalue">az alapértelmezett érték</param>
284 341 /// <returns></returns>
285   - private static int GetPositiveIntFromXml(string xname, XElement pingerconfig, int defaultvalue)
  342 + private static int GetPositiveIntFromXml(string xname, XElement pingerconfig, int defaultvalue=0)
286 343 {
287 344 string valstr = pingerconfig?.Element(XName.Get(xname))?.Value;
288 345 int val = defaultvalue;
... ... @@ -290,6 +347,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
290 347 return val;
291 348 }
292 349  
  350 + public List<int> RoundTripTimeLimits=null;
  351 + public List<int> RoundTripTimeyCategoryLimits=null;
293 352 public int pingtimeout;
294 353 public int pingcyclefrequency;
295 354 public int pingcyclenumofpackages;
... ... @@ -301,7 +360,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
301 360 const string PINGCYCLENUMOFPACKAGES = "PingCycleNumOfPackages";
302 361 const string PINGERACTIVELENGTHTOSTOPPERIOD = "PingerActiveLength";
303 362 const string PINGERHISTORYLENGTH = "PingerHistoryLength";
304   - public const int DEFAULT_PINGTIMEOUT = PingCycle.MAXROUNDTRIPTIMEOUTCATEGORY;
  363 + const string ROUNDTRIPTIMELIMITS = "RoundTripTimeLimits";
  364 + const string ROUNDTRIPTIMECATEGORYLIMITS = "RoundTripCategoryLimits";
  365 + public const int DEFAULT_PINGTIMEOUT = 0;
305 366 public const int DEFAULT_PINGCYCLENUMOFPACKAGES = 4;
306 367 public const int DEFAULT_PINGERACTIVELENGTH = 60;
307 368 public const int DEFAULT_PINGERHISTORYLENGTH = 60;
... ... @@ -380,6 +441,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
380 441 this.LastPingCycle.RoundtripTimeAverage = totalrtt / this.LastPingCycle.NumberOfCycles;
381 442 this.LastPingCycle.PackagesSent += newpc.PackagesSent;
382 443 this.LastPingCycle.PackagesLost += newpc.PackagesLost;
  444 + this.LastPingCycle.PackagesSentCategory = this.LastPingCycle.GetLostPackageCategory();
383 445 this.LastPingCycle.LastTimestamp = newpc.StartTimestamp;
384 446 if (newpc.RoundtripTimeMax != -1 && this.LastPingCycle.RoundtripTimeMax != -1)
385 447 {
... ... @@ -400,12 +462,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
400 462 firstelement.NumberOfCycles = (int)((double)firstelement.NumberOfCycles * partiallength / fulllength);
401 463 if (firstelement.NumberOfCycles == 0 || firstelement.PackagesSent == 0) { this.PingStateQueue.Remove(firstelement); firstelement = this.PingStateQueue.FirstOrDefault(); }
402 464  
403   - var packagelostratio = firstelement.PackagesLost / firstelement.PackagesSent;
404   - firstelement.PackagesSentCategory =
405   - packagelostratio == 0 ? PingCycle.LostPackageCategory.Excellent
406   - : packagelostratio < 0.1 ? PingCycle.LostPackageCategory.Good
407   - : packagelostratio < 0.3 ? PingCycle.LostPackageCategory.Acceptable
408   - : PingCycle.LostPackageCategory.Bad;
  465 + firstelement.PackagesSentCategory = firstelement.GetLostPackageCategory();
409 466 firstelement.StartTimestamp = borderts;
410 467 }
411 468 StartTime = firstelement?.StartTimestamp ?? DateTime.MaxValue;
... ... @@ -457,17 +514,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
457 514 this.PackagesSentCategory = pc.PackagesSentCategory;
458 515 this.NumberOfCycles = pc.NumberOfCycles;
459 516 this.StatusCategory = pc.StatusCategory;
  517 + this.RoundtripTime = pc.RoundtripTime;
460 518 this.RoundtripTimeAverage = pc.RoundtripTimeAverage;
461 519 this.RoundtripTimeMax = pc.RoundtripTimeMax;
462 520 this.RoundtripTimeMin= pc.RoundtripTimeMin;
  521 + this.RoundtripTimeCategory = pc.RoundtripTimeCategory;
463 522 }
464 523  
465 524 #region public fields,enums
466 525 /// <summary>
467   - /// A maximális ping timeout kategória értéke
468   - /// </summary>
469   - public const int MAXROUNDTRIPTIMEOUTCATEGORY = 5000;
470   - /// <summary>
471 526 /// A Ping állapot ezen időpillanattól kezdődően állt/áll fenn
472 527 /// </summary>
473 528 public DateTime StartTimestamp;
... ... @@ -553,15 +608,19 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
553 608 {
554 609 this.StartTimestamp = DateTime.Now;
555 610 this.LastTimestamp = this.StartTimestamp;
  611 + PingReply pr;
556 612 for (var i = 0; i < this.PackagesSent; i++)
557 613 {
558   - var pr = PingTool.Ping(this.HostNameOrAddress, (int)PingTimeout);//egy ping kérés feladása
  614 + pr = null;
  615 + try { pr = PingTool.Ping(this.HostNameOrAddress, (int)PingTimeout); }//egy ping kérés feladása
  616 + catch { }
559 617 AddResponse(pr, i + 1);//a ping válasz "bedolgozása" a pingciklus-állapotba
560 618 }
561   -
562   - this.RoundtripTime = RoundTripTimeLimits.LastOrDefault(x => x <= this.RoundtripTimeAverage);
563   - var RoundTripTimeyCategoryValue = RoundTripTimeyCategoryLimits.LastOrDefault(x => x < this.RoundtripTimeAverage);
564   - var RoundTripTimeyCategoryIndex = RoundTripTimeyCategoryLimits.FindIndex(x => x == RoundTripTimeyCategoryValue);
  619 +
  620 + this.PackagesSentCategory = GetLostPackageCategory();
  621 + this.RoundtripTime = Pinger.RoundTripTimeLimits.LastOrDefault(x => x <= this.RoundtripTimeAverage);
  622 + var RoundTripTimeyCategoryValue = Pinger.RoundTripTimeyCategoryLimits.LastOrDefault(x => x < this.RoundtripTimeAverage);
  623 + var RoundTripTimeyCategoryIndex = Pinger.RoundTripTimeyCategoryLimits.FindIndex(x => x == RoundTripTimeyCategoryValue);
565 624 this.RoundtripTimeCategory = RoundTripTimeyCategoryIndex == 0 ? RoundTripTimeCategory.Q1
566 625 : RoundTripTimeyCategoryIndex == 1 ? RoundTripTimeCategory.Q2
567 626 : RoundTripTimeyCategoryIndex == 2 ? RoundTripTimeCategory.Q3
... ... @@ -576,19 +635,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
576 635 /// </summary>
577 636 private string HostNameOrAddress;
578 637 /// <summary>
579   - /// A FINOM válaszidő kategóriákat tartalmazza; egy válasz az i. válaszidő kategóriába tartozik, ha a pontos válaszidő nagyobb, vagy egyenlő,
580   - /// mint az i. elem értéke, de kisebb, mint az i+1. elem értéke.A sor első elemének értéke mindig 0!!!!
581   - /// Ha a sor értékei: 0:0,1:100,2:200,3:300,4:400,5:500, a pontos válaszidő 350, akkor ez a 2. kategóriába tartozik, ha pontos válaszidő.
582   - /// </summary>
583   - private static List<int> RoundTripTimeLimits = new List<int> { 0, 25, 50, 75, 100, 150, 200, 250, 300, 400, 500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 3000, 3500, 4000, 4500, PingCycle.MAXROUNDTRIPTIMEOUTCATEGORY, };
584   -
585   - /// <summary>
586   - /// A DURVA válaszidő kategóriákat tartalmazza; egy válasz az i. válaszidő kategóriába tartozik, ha a pontos válaszidő nagyobb, vagy egyenlő,
587   - /// mint az i. elem értéke, de kisebb, mint az i+1. elem értéke.A sor első elemének értéke mindig 0!!!!
588   - /// Ha a sor értékei: 0:0,1:100,2:200,3:300,4:400,5:500, a pontos válaszidő 350, akkor ez a 2. kategóriába tartozik, ha pontos válaszidő.
589   - /// </summary>
590   - private static List<int> RoundTripTimeyCategoryLimits = new List<int> { 0, 50, 250, 750, };
591   - /// <summary>
592 638 /// Az egyes ping kérések timeout-ja
593 639 /// </summary>
594 640 private int PingTimeout;
... ... @@ -610,13 +656,30 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
610 656 else { this.PackagesLost++; }
611 657 if (ipsCat < this.StatusCategory) { this.StatusCategory = ipsCat; }// a legjobb státuszt tárolja
612 658 }
  659 +
  660 + /// <summary>
  661 + /// Visszaadja az elveszett és összes csomagok száma alapján a lostpackagecategory értéket
  662 + /// </summary>
  663 + /// <param name="packageslost">az elveszett csomagok száma</param>
  664 + /// <param name="packagessent">az összes csomagok száma</param>
  665 + /// <returns></returns>
  666 + public LostPackageCategory GetLostPackageCategory()
  667 + {
  668 + double packagelostratio = (double)this.PackagesLost / (double)this.PackagesSent;
  669 + return packagelostratio == 0 ? PingCycle.LostPackageCategory.Excellent
  670 + : packagelostratio < 0.1 ? PingCycle.LostPackageCategory.Good
  671 + : packagelostratio < 0.3 ? PingCycle.LostPackageCategory.Acceptable
  672 + : PingCycle.LostPackageCategory.Bad;
  673 + }
613 674 /// <summary>
614 675 /// Visszaadja, hogy a PingReply adat alapján a válasz melyik státusz kategóriába tartozik
615 676 /// </summary>
616 677 /// <param name="pr"></param>
617 678 /// <returns></returns>
618   - private IPStatusCategory GetIPStatusCategory(PingReply pr)
  679 + private static IPStatusCategory GetIPStatusCategory(PingReply pr)
619 680 {
  681 + //if (new Random().Next(0, 9) < 3) { return IPStatusCategory.Failed; }
  682 + if (pr == null) { return IPStatusCategory.Failed; }
620 683 switch (pr.Status)
621 684 {
622 685 case IPStatus.Success: return IPStatusCategory.Success;//Success = 0,The ICMP echo request succeeded; an ICMP echo reply was received. When you get this status code, the other System.Net.NetworkInformation.PingReply properties contain valid data.
... ...
Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
... ... @@ -109,11 +109,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
109 109 var config = (parameter as Menu.ExecutorParameter).GetConfig<MaintenanceToolsXmlProcessor>();
110 110 var pingerconfigxml = config.PingerConfigXml;
111 111 var iplist = config.PingerIpAddressList;
112   - DisplayPingerParameters(pingerconfigxml);
113 112 var firstrun = true;
114 113 var suppresserroneousipaddresses = false;
115 114 while (true)
116 115 {
  116 + DisplayPingerParameters(pingerconfigxml);
117 117 DisplayAllPingerStatus(pingerconfigxml,iplist, suppresserroneousipaddresses);
118 118 suppresserroneousipaddresses = true;
119 119 if (!firstrun) { DisplayPingerCommands(); }
... ... @@ -162,15 +162,22 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
162 162  
163 163 private static void DisplayPingerCommands()
164 164 {
165   - ColorConsole.WriteLine($"Enter 'START [ip address]' to start/restart pinging.", ConsoleColor.Yellow);
166   - ColorConsole.WriteLine($"Enter 'STOP [ip address]' to stop pinging.", ConsoleColor.Yellow);
167   - ColorConsole.WriteLine($"Enter 'DROP [ip address]' to drop collected data.", ConsoleColor.Yellow);
168   - ColorConsole.WriteLine($"Enter 'SHOW [ip address]' to start monitoring .", ConsoleColor.Yellow);
  165 + ColorConsole.WriteLine();
  166 + ColorConsole.WriteLine($"Pinger commands:", ConsoleColor.Yellow);
  167 + ColorConsole.WriteLine($"START", ConsoleColor.Yellow,prefix:" ",suffix: " [ip address] to start/restart pinging.",bracket:"[]");
  168 + ColorConsole.WriteLine($"STOP", ConsoleColor.Yellow, prefix: " ", suffix: " [ip address] to stop pinging.", bracket: "[]");
  169 + ColorConsole.WriteLine($"DROP", ConsoleColor.Yellow, prefix: " ", suffix: " [ip address] to drop collected data.", bracket: "[]");
  170 + ColorConsole.WriteLine($"SHOW", ConsoleColor.Yellow, prefix: " ", suffix: " [ip address] to start monitoring.", bracket: "[]");
169 171 ColorConsole.WriteLine($"Set [ip address] to 'ALL' or '*' for action to all ip addresses.", ConsoleColor.Yellow);
170 172 }
171 173  
172 174 private static void DisplayPingerParameters(XElement pingerconfigxml)
173 175 {
  176 + ColorConsole.Clear();
  177 + var pingertitle = "IP Pinger";
  178 + ColorConsole.WriteLine(ColorConsole.WideString(pingertitle), ConsoleColor.Yellow);
  179 + ColorConsole.WriteLine(new string('-', 2*pingertitle.Length), ConsoleColor.Yellow);
  180 + ColorConsole.WriteLine();
174 181 ColorConsole.WriteLine($"Pinger configuration parameters:", ConsoleColor.Yellow);
175 182 var pconfig = new Pinger("127.0.0.1", pingerconfigxml).Configuration;
176 183 ColorConsole.WriteLine(pconfig.pingtimeout.ToString(), ConsoleColor.Yellow, prefix: " pingtimeout :", suffix: "ms");
... ... @@ -178,11 +185,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
178 185 ColorConsole.WriteLine((pconfig.pingcyclefrequency / 1000).ToString(), ConsoleColor.Yellow, prefix: " cycle frequency:", suffix: "sec");
179 186 ColorConsole.WriteLine((pconfig.pingeractivlength / 60000).ToString(), ConsoleColor.Yellow, prefix: " pinger liftime :", suffix: "min");
180 187 ColorConsole.WriteLine((pconfig.pingerhistorylength / 60000).ToString(), ConsoleColor.Yellow, prefix: " history length :", suffix: "min");
181   - ColorConsole.WriteLine($"Pinger status for the following addresses:", ConsoleColor.Yellow);
  188 + var rttlstring = (string.Join(",", pconfig.RoundTripTimeLimits)).ToString();
  189 + ColorConsole.WriteLine(rttlstring.Substring(0, rttlstring.Length>20?20: rttlstring.Length) + (rttlstring.Length > 20 ? "..." : ""), ConsoleColor.Yellow, prefix: " roundtrip time limit values :", suffix: "ms");
  190 + ColorConsole.WriteLine((string.Join(",", pconfig.RoundTripTimeyCategoryLimits)).ToString(), ConsoleColor.Yellow, prefix: " roundtrip time category limit values:", suffix: "ms");
182 191 }
183 192 private static void DisplayPingerHistory(List<Pinger> selectedpingers)
184 193 {
185 194 ColorConsole.WriteLine();
  195 + ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow);
186 196 var cursorleftposition = ColorConsole.CursorLeft;
187 197 var cursortopposition = ColorConsole.CursorTop;
188 198 while (true)
... ... @@ -202,8 +212,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
202 212 {
203 213 var _h = pinger.GetHistory();
204 214 if (_h == null) { return 0; }
205   - var h = new Pinger.PingHistory(pinger.GetHistory());//klónozzuk, mert egyébként ha az adatgyűjtés miatt megváltozik akkor exception-re fut a foreach
206   - ColorConsole.Write(pinger.HostNameOrAddress, ConsoleColor.Yellow, suffix: ": ");
  215 + var h = new Pinger.PingHistory(_h);//klónozzuk, mert egyébként ha az adatgyűjtés miatt megváltozik akkor exception-re fut a foreach
  216 + ColorConsole.Write(pinger.HostNameOrAddress, ConsoleColor.Yellow, suffix: ": ",prefix:" ");
207 217 var pingerstatus = pinger.Operating ? "pinging" : "still";
208 218 var pingerstatuscolor = pinger.Operating ? ConsoleColor.Green : ConsoleColor.Yellow;
209 219 ColorConsole.Write(pingerstatus.PadRight(10), pingerstatuscolor);
... ... @@ -212,7 +222,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
212 222 if (lc != null)
213 223 {
214 224 var responseinfo = lc.StatusCategory != Pinger.PingCycle.IPStatusCategory.Success ? $"{lc.StatusCategory}" : $"RT:{lc.RoundtripTime} [{lc.RoundtripTimeMin}<{lc.RoundtripTimeAverage}<{lc.RoundtripTimeMax}]ms, LP:{lc.PackagesSentCategory}";
215   - responseinfo=responseinfo.PadRight(35)+" ";
  225 + responseinfo=responseinfo.PadRight(40)+" ";
216 226 ColorConsole.Write(responseinfo, GetPingCycleDisplayColor(lc));
217 227  
218 228 foreach (var he in h.PingStateQueue)
... ... @@ -227,7 +237,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
227 237 ColorConsole.WriteLine();
228 238 return h.PingCycleFrequency;
229 239 }
230   - private static string GetPingCycleDisplayCharacter(Pinger.PingCycle he) { return he.StatusCategory != Pinger.PingCycle.IPStatusCategory.Success ? "9" : he.RoundtripTimeCategory.ToString().Substring(1); }
  240 + private static string GetPingCycleDisplayCharacter(Pinger.PingCycle he)
  241 + {
  242 + return he.StatusCategory != Pinger.PingCycle.IPStatusCategory.Success
  243 + ? "9"
  244 + : he.RoundtripTimeCategory.ToString().Substring(1);
  245 + }
231 246 private static ConsoleColor GetPingCycleDisplayColor(Pinger.PingCycle pingcycle)
232 247 {
233 248 return pingcycle.StatusCategory != Pinger.PingCycle.IPStatusCategory.Success ? ConsoleColor.Red
... ... @@ -239,13 +254,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
239 254 }
240 255 private static void DisplayAllPingerStatus(XElement pingerconfigxml,List<MaintenanceToolsXmlProcessor.IPAddressParsingResult> iplist, bool suppresserroneousipaddresses=false)
241 256 {
  257 + ColorConsole.WriteLine();
  258 + ColorConsole.WriteLine($"Pinger status for the following addresses:", ConsoleColor.Yellow);
242 259 foreach (var ip in iplist) { DisplayOnePingerStatus(ip, pingerconfigxml, suppresserroneousipaddresses); }
243 260 }
244 261 private static void DisplayOnePingerStatus(MaintenanceToolsXmlProcessor.IPAddressParsingResult ip, XElement pingerconfigxml,bool suppresserroneousipaddresses = false)
245 262 {
246 263 if (ip.GoodIP)
247 264 {
248   - ColorConsole.Write($"{ip.IP}", ConsoleColor.Green);
  265 + ColorConsole.Write($"{ip.IP}", ConsoleColor.Green,prefix:" ");
249 266  
250 267 var pingerlist = PingerList.Select(x => x.HostNameOrAddress).ToList();
251 268 Pinger pinger;
... ...
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... ... @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 32 // You can specify all the values or you can default the Build and Revision Numbers
33 33 // by using the '*' as shown below:
34 34 // [assembly: AssemblyVersion("1.0.*")]
35   -[assembly: AssemblyVersion("1.8.0.0")]
36   -[assembly: AssemblyFileVersion("1.8.0.0")]
  35 +[assembly: AssemblyVersion("1.8.1.0")]
  36 +[assembly: AssemblyFileVersion("1.8.1.0")]
... ...