Commit 7e23fb052f26383c53c09370d6298d0c77510107

Authored by Schwirg László
1 parent 572da06d

Pinger javítgatása

Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
... ... @@ -93,6 +93,40 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
93 93 }
94 94  
95 95 /// <summary>
  96 + /// Törli az aktuális sort (szóközökkel) a pillanatnyi pozíciótól a megadott szélességben
  97 + /// </summary>
  98 + /// <param name="width">ha 0, akkor a sor végéig</param>
  99 + public static void ClearLine(int width=0,char fillchar=' ')
  100 + {
  101 + int currentLineCursor = Console.CursorTop;
  102 + int currentColCursor = Console.CursorLeft;
  103 + if (width == 0) { width = Console.WindowWidth - currentColCursor; }
  104 + Console.SetCursorPosition(currentColCursor, Console.CursorTop);
  105 + Console.Write(new string(fillchar, width));
  106 + Console.SetCursorPosition(currentColCursor, currentLineCursor);
  107 + }
  108 +
  109 +
  110 + /// <summary>
  111 + /// Törli (szóközökkel) a megadott szélességű és magasságú területet a megadott cursor pozíciótól véve
  112 + /// </summary>
  113 + /// <param name="height">ha 0, akkor az ablak aljáig</param>
  114 + /// <param name="width">ha 0, akkor a sorok végéig</param>
  115 + public static void ClearArea(int width=0, int height=0, char fillchar = ' ')
  116 + {
  117 + int currentLineCursor = Console.CursorTop;
  118 + int currentColCursor = Console.CursorLeft;
  119 + if (height == 0) { height = Console.WindowHeight; }
  120 + for (var i=0;i<height;i++)
  121 + {
  122 + ClearLine(width, fillchar);
  123 + Console.CursorTop++;
  124 + }
  125 + Console.SetCursorPosition(currentColCursor, currentLineCursor);
  126 + }
  127 +
  128 +
  129 + /// <summary>
96 130 /// Beolvas egy sort a consolról, vagy commandmode-ban a bufferból
97 131 /// </summary>
98 132 /// <param name="text"></param>
... ...
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs
... ... @@ -35,7 +35,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
35 35 private Pinger(string hostNameOrAddress, PingerConfig pc)
36 36 {
37 37 this.HostNameOrAddress = hostNameOrAddress;
38   - this.History = new PingHistory(hostNameOrAddress, pc.pingerhistorylength, pc.pingcyclefrequency);
  38 + this.History = new PingHistory(hostNameOrAddress, pc);
39 39 this.PingTimeout = pc.pingtimeout;
40 40 this.PingCycleFrequency = pc.pingcyclefrequency;
41 41 this.PingCycleNumberOfPackages = pc.pingcyclenumofpackages;
... ... @@ -269,9 +269,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
269 269 var _pingcyclenumofpackages = GetPositiveIntFromXml(PINGCYCLENUMOFPACKAGES, pingerconfig);
270 270 var _pingerlifetime = GetPositiveIntFromXml(PINGERACTIVELENGTHTOSTOPPERIOD, pingerconfig);
271 271 var _pingerhistorylength = GetPositiveIntFromXml(PINGERHISTORYLENGTH, pingerconfig);
  272 + var _optimizehistorylength = pingerconfig.Element(OPTIMIZEHISTORYLENGTH)?.Value; ;
272 273 var _roundtriptimelimits = pingerconfig.Element(ROUNDTRIPTIMELIMITS)?.Value;
273 274 var _roundtriptimecategorylimits = pingerconfig.Element(ROUNDTRIPTIMECATEGORYLIMITS)?.Value;
274   - SetValues(_pingtimeout, _pingcyclefrequency, _pingcyclenumofpackages, _pingerlifetime, _pingerhistorylength, _roundtriptimelimits, _roundtriptimecategorylimits);
  275 + SetValues(_pingtimeout, _pingcyclefrequency, _pingcyclenumofpackages, _pingerlifetime, _pingerhistorylength, _roundtriptimelimits, _roundtriptimecategorylimits,_optimizehistorylength);
275 276 }
276 277 else { SetValues(); }
277 278 }
... ... @@ -284,9 +285,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
284 285 /// <param name="pingcyclenumofpackages">pcs</param>
285 286 /// <param name="pingeractivelength">minutes</param>
286 287 /// <param name="pingerhistorylength">minutes</param>
287   - public PingerConfig(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0,string rttlimits=null, string rttcatlimits=null)
  288 + public PingerConfig(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0,string rttlimits=null, string rttcatlimits=null,string optimizehlength=null)
288 289 {
289   - SetValues(pingtimeout, pingcyclefrequency, pingcyclenumofpackages, pingeractivelength, pingerhistorylength, rttlimits , rttcatlimits);
  290 + SetValues(pingtimeout, pingcyclefrequency, pingcyclenumofpackages, pingeractivelength, pingerhistorylength, rttlimits , rttcatlimits, optimizehlength);
290 291 }
291 292  
292 293 /// <summary>
... ... @@ -297,11 +298,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
297 298 /// <param name="pingcyclenumofpackages">pcs</param>
298 299 /// <param name="pingeractivelength">minutes</param>
299 300 /// <param name="pingerhistorylength">minutes</param>
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)
  301 + private void SetValues(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0, string rttlimits = null, string rttcatlimits = null,string optimizehlength=null)
301 302 {
302 303 this.pingcyclenumofpackages = pingcyclenumofpackages <= 0 ? PingerConfig.DEFAULT_PINGCYCLENUMOFPACKAGES : pingcyclenumofpackages;
303 304 this.pingeractivlength = (pingeractivelength <= 0 ? PingerConfig.DEFAULT_PINGERACTIVELENGTH : pingeractivelength) * 60 * 1000;
304 305 this.pingerhistorylength = (pingerhistorylength <= 0 ? PingerConfig.DEFAULT_PINGERHISTORYLENGTH : pingerhistorylength) * 60 * 1000;
  306 + bool optimizehlengthbool=true;
  307 + if (optimizehlength != null) { optimizehlengthbool = bool.TryParse(optimizehlength.ToLower(), out optimizehlengthbool) ? optimizehlengthbool : true; }
  308 + this.optimizehistorylength = optimizehlengthbool;
305 309  
306 310 try
307 311 {
... ... @@ -354,12 +358,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
354 358 public int pingcyclenumofpackages;
355 359 public int pingeractivlength;
356 360 public int pingerhistorylength;
  361 + public bool optimizehistorylength;
357 362  
358 363 const string PINGTIMEOUT = "PingTimeout";
359 364 const string PINGCYCLEFREQUENCY = "PingCycleFrequency";
360 365 const string PINGCYCLENUMOFPACKAGES = "PingCycleNumOfPackages";
361 366 const string PINGERACTIVELENGTHTOSTOPPERIOD = "PingerActiveLength";
362 367 const string PINGERHISTORYLENGTH = "PingerHistoryLength";
  368 + const string OPTIMIZEHISTORYLENGTH = "OptimizeHistoryLength";
363 369 const string ROUNDTRIPTIMELIMITS = "RoundTripTimeLimits";
364 370 const string ROUNDTRIPTIMECATEGORYLIMITS = "RoundTripCategoryLimits";
365 371 public const int DEFAULT_PINGTIMEOUT = 0;
... ... @@ -397,19 +403,25 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
397 403 /// </summary>
398 404 public int PingCycleFrequency;
399 405  
  406 + /// <summary>
  407 + /// Az érvényes configuráció
  408 + /// </summary>
  409 + public PingerConfig PingerConfig;
  410 +
400 411 public string HostNameOrAddress;
401 412 public PingerStatus PingerState = PingerStatus.Still;
402 413 public DateTime StartTime;
403 414  
404 415 private object historylocker = new object();
405 416  
406   - public PingHistory(string hostnameoraddress, int pingerhistorylength,int pingcyclefrequency)
  417 + public PingHistory(string hostnameoraddress, PingerConfig pingerconfig)
407 418 {
408 419 this.HostNameOrAddress = hostnameoraddress;
409 420 this.PingStateQueue = new List<PingCycle>();
410 421 this.LastPingCycle = null;
411   - this.Length = pingerhistorylength;
412   - this.PingCycleFrequency = pingcyclefrequency;
  422 + this.Length = pingerconfig.pingerhistorylength;
  423 + this.PingCycleFrequency = pingerconfig.pingcyclefrequency;
  424 + this.PingerConfig = pingerconfig;
413 425 }
414 426 public PingHistory(PingHistory ph)
415 427 {
... ... @@ -418,6 +430,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
418 430 this.LastPingCycle = ph.LastPingCycle;
419 431 this.Length = ph.Length;
420 432 this.PingCycleFrequency = ph.PingCycleFrequency;
  433 + this.PingerConfig = ph.PingerConfig;
421 434 }
422 435  
423 436 public void Dispose()
... ... @@ -433,7 +446,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
433 446 {
434 447 lock (historylocker)
435 448 {
436   - if (this.LastPingCycle?.isDifferent(newpc) ?? true) { this.PingStateQueue.Add(newpc); this.LastPingCycle = newpc; }
  449 + if (!this.PingerConfig.optimizehistorylength || (this.LastPingCycle?.isDifferent(newpc) ?? true)) { this.PingStateQueue.Add(newpc); this.LastPingCycle = newpc; }
437 450 else
438 451 {
439 452 var totalrtt = ((this.LastPingCycle.RoundtripTimeAverage * this.LastPingCycle.NumberOfCycles) + newpc.RoundtripTimeAverage);
... ... @@ -590,7 +603,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
590 603 /// <returns></returns>
591 604 public bool isDifferent(PingCycle pc)
592 605 {
593   - return this.StatusCategory != pc.StatusCategory || this.RoundtripTime != pc.RoundtripTime;
  606 + return this.StatusCategory != pc.StatusCategory
  607 + || this.RoundtripTime != pc.RoundtripTime;
594 608 }
595 609 #endregion isDifferent
596 610  
... ...
Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
... ... @@ -191,6 +191,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
191 191 ColorConsole.WriteLine((pconfig.pingcyclefrequency / 1000).ToString(), ConsoleColor.Yellow, prefix: " cycle frequency:", suffix: "sec");
192 192 ColorConsole.WriteLine((pconfig.pingeractivlength / 60000).ToString(), ConsoleColor.Yellow, prefix: " pinger liftime :", suffix: "min");
193 193 ColorConsole.WriteLine((pconfig.pingerhistorylength / 60000).ToString(), ConsoleColor.Yellow, prefix: " history length :", suffix: "min");
  194 + ColorConsole.WriteLine((pconfig.optimizehistorylength).ToString(), ConsoleColor.Yellow, prefix: " optimize history length :", suffix: "");
194 195 var rttlstring = (string.Join(",", pconfig.RoundTripTimeLimits)).ToString();
195 196 ColorConsole.WriteLine(rttlstring.Substring(0, rttlstring.Length>20?20: rttlstring.Length) + (rttlstring.Length > 20 ? "..." : ""), ConsoleColor.Yellow, prefix: " roundtrip time limit values :", suffix: "ms");
196 197 ColorConsole.WriteLine((string.Join(",", pconfig.RoundTripTimeyCategoryLimits)).ToString(), ConsoleColor.Yellow, prefix: " roundtrip time category limit values:", suffix: "ms");
... ... @@ -198,13 +199,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
198 199 private static void DisplayPingerHistory(List<Pinger> selectedpingers,int firstrow,int cc)
199 200 {
200 201 if (selectedpingers == null || !selectedpingers.Any()) { return; }
201   - var lastrow = ColorConsole.CursorTop;
202   - ColorConsole.SetCursorPosition(cc,firstrow);
203   - for (var i= 0; i< lastrow - firstrow;i++) { ColorConsole.WriteLine(new string(' ',100)); }
204 202 ColorConsole.SetCursorPosition(cc, firstrow);
205 203  
206   - ColorConsole.WriteLine();
207   - ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow);
  204 + ColorConsole.ClearLine();ColorConsole.WriteLine();
  205 + ColorConsole.ClearLine();ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow);
208 206 var cursorleftposition = ColorConsole.CursorLeft;
209 207 var cursortopposition = ColorConsole.CursorTop;
210 208 while (true)
... ... @@ -215,8 +213,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
215 213 foreach (var pinger in selectedpingers) { pingcyclefrequency=DisplayOnePingerHistory(pinger); if (ColorConsole.KeyAvailable) { goto finishdisplayhistory; };}
216 214 var elapsed = DateTime.Now.Subtract(monitorcyclestart).TotalMilliseconds;
217 215 if (elapsed < pingcyclefrequency) { Thread.Sleep((int)((double)pingcyclefrequency - elapsed)); }
218   - ColorConsole.WriteLine();
219   - ColorConsole.WriteLine($"Press any key to exit from monitoring...", ConsoleColor.Yellow);
  216 + ColorConsole.ClearLine(); ColorConsole.WriteLine();
  217 + ColorConsole.ClearLine(); ColorConsole.WriteLine($"Press any key to exit from monitoring...", ConsoleColor.Yellow);
220 218 }
221 219 finishdisplayhistory:;
222 220 }
... ... @@ -225,6 +223,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
225 223 var _h = pinger.GetHistory();
226 224 if (_h == null) { return 0; }
227 225 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
  226 + ColorConsole.ClearLine();
228 227 ColorConsole.Write(pinger.HostNameOrAddress, ConsoleColor.Yellow, suffix: ": ",prefix:" ");
229 228 var pingerstatus = pinger.Operating ? "pinging" : "still";
230 229 var pingerstatuscolor = pinger.Operating ? ConsoleColor.Green : ConsoleColor.Yellow;
... ...
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.2.0")]
36   -[assembly: AssemblyFileVersion("1.8.2.0")]
  35 +[assembly: AssemblyVersion("1.8.3.0")]
  36 +[assembly: AssemblyFileVersion("1.8.3.0")]
... ...