diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
index cd9f695..ac3db91 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
@@ -93,6 +93,40 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
}
///
+ /// Törli az aktuális sort (szóközökkel) a pillanatnyi pozíciótól a megadott szélességben
+ ///
+ /// ha 0, akkor a sor végéig
+ public static void ClearLine(int width=0,char fillchar=' ')
+ {
+ int currentLineCursor = Console.CursorTop;
+ int currentColCursor = Console.CursorLeft;
+ if (width == 0) { width = Console.WindowWidth - currentColCursor; }
+ Console.SetCursorPosition(currentColCursor, Console.CursorTop);
+ Console.Write(new string(fillchar, width));
+ Console.SetCursorPosition(currentColCursor, currentLineCursor);
+ }
+
+
+ ///
+ /// 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
+ ///
+ /// ha 0, akkor az ablak aljáig
+ /// ha 0, akkor a sorok végéig
+ public static void ClearArea(int width=0, int height=0, char fillchar = ' ')
+ {
+ int currentLineCursor = Console.CursorTop;
+ int currentColCursor = Console.CursorLeft;
+ if (height == 0) { height = Console.WindowHeight; }
+ for (var i=0;i
/// Beolvas egy sort a consolról, vagy commandmode-ban a bufferból
///
///
diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs
index 4830e59..cf0a2de 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs
@@ -35,7 +35,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
private Pinger(string hostNameOrAddress, PingerConfig pc)
{
this.HostNameOrAddress = hostNameOrAddress;
- this.History = new PingHistory(hostNameOrAddress, pc.pingerhistorylength, pc.pingcyclefrequency);
+ this.History = new PingHistory(hostNameOrAddress, pc);
this.PingTimeout = pc.pingtimeout;
this.PingCycleFrequency = pc.pingcyclefrequency;
this.PingCycleNumberOfPackages = pc.pingcyclenumofpackages;
@@ -269,9 +269,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
var _pingcyclenumofpackages = GetPositiveIntFromXml(PINGCYCLENUMOFPACKAGES, pingerconfig);
var _pingerlifetime = GetPositiveIntFromXml(PINGERACTIVELENGTHTOSTOPPERIOD, pingerconfig);
var _pingerhistorylength = GetPositiveIntFromXml(PINGERHISTORYLENGTH, pingerconfig);
+ var _optimizehistorylength = pingerconfig.Element(OPTIMIZEHISTORYLENGTH)?.Value; ;
var _roundtriptimelimits = pingerconfig.Element(ROUNDTRIPTIMELIMITS)?.Value;
var _roundtriptimecategorylimits = pingerconfig.Element(ROUNDTRIPTIMECATEGORYLIMITS)?.Value;
- SetValues(_pingtimeout, _pingcyclefrequency, _pingcyclenumofpackages, _pingerlifetime, _pingerhistorylength, _roundtriptimelimits, _roundtriptimecategorylimits);
+ SetValues(_pingtimeout, _pingcyclefrequency, _pingcyclenumofpackages, _pingerlifetime, _pingerhistorylength, _roundtriptimelimits, _roundtriptimecategorylimits,_optimizehistorylength);
}
else { SetValues(); }
}
@@ -284,9 +285,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
/// pcs
/// minutes
/// minutes
- public PingerConfig(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0,string rttlimits=null, string rttcatlimits=null)
+ 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)
{
- SetValues(pingtimeout, pingcyclefrequency, pingcyclenumofpackages, pingeractivelength, pingerhistorylength, rttlimits , rttcatlimits);
+ SetValues(pingtimeout, pingcyclefrequency, pingcyclenumofpackages, pingeractivelength, pingerhistorylength, rttlimits , rttcatlimits, optimizehlength);
}
///
@@ -297,11 +298,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
/// pcs
/// minutes
/// minutes
- private void SetValues(int pingtimeout = 0, int pingcyclefrequency = 0, int pingcyclenumofpackages = 0, int pingeractivelength = 0, int pingerhistorylength = 0, string rttlimits = null, string rttcatlimits = null)
+ 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)
{
this.pingcyclenumofpackages = pingcyclenumofpackages <= 0 ? PingerConfig.DEFAULT_PINGCYCLENUMOFPACKAGES : pingcyclenumofpackages;
this.pingeractivlength = (pingeractivelength <= 0 ? PingerConfig.DEFAULT_PINGERACTIVELENGTH : pingeractivelength) * 60 * 1000;
this.pingerhistorylength = (pingerhistorylength <= 0 ? PingerConfig.DEFAULT_PINGERHISTORYLENGTH : pingerhistorylength) * 60 * 1000;
+ bool optimizehlengthbool=true;
+ if (optimizehlength != null) { optimizehlengthbool = bool.TryParse(optimizehlength.ToLower(), out optimizehlengthbool) ? optimizehlengthbool : true; }
+ this.optimizehistorylength = optimizehlengthbool;
try
{
@@ -354,12 +358,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
public int pingcyclenumofpackages;
public int pingeractivlength;
public int pingerhistorylength;
+ public bool optimizehistorylength;
const string PINGTIMEOUT = "PingTimeout";
const string PINGCYCLEFREQUENCY = "PingCycleFrequency";
const string PINGCYCLENUMOFPACKAGES = "PingCycleNumOfPackages";
const string PINGERACTIVELENGTHTOSTOPPERIOD = "PingerActiveLength";
const string PINGERHISTORYLENGTH = "PingerHistoryLength";
+ const string OPTIMIZEHISTORYLENGTH = "OptimizeHistoryLength";
const string ROUNDTRIPTIMELIMITS = "RoundTripTimeLimits";
const string ROUNDTRIPTIMECATEGORYLIMITS = "RoundTripCategoryLimits";
public const int DEFAULT_PINGTIMEOUT = 0;
@@ -397,19 +403,25 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
///
public int PingCycleFrequency;
+ ///
+ /// Az érvényes configuráció
+ ///
+ public PingerConfig PingerConfig;
+
public string HostNameOrAddress;
public PingerStatus PingerState = PingerStatus.Still;
public DateTime StartTime;
private object historylocker = new object();
- public PingHistory(string hostnameoraddress, int pingerhistorylength,int pingcyclefrequency)
+ public PingHistory(string hostnameoraddress, PingerConfig pingerconfig)
{
this.HostNameOrAddress = hostnameoraddress;
this.PingStateQueue = new List();
this.LastPingCycle = null;
- this.Length = pingerhistorylength;
- this.PingCycleFrequency = pingcyclefrequency;
+ this.Length = pingerconfig.pingerhistorylength;
+ this.PingCycleFrequency = pingerconfig.pingcyclefrequency;
+ this.PingerConfig = pingerconfig;
}
public PingHistory(PingHistory ph)
{
@@ -418,6 +430,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
this.LastPingCycle = ph.LastPingCycle;
this.Length = ph.Length;
this.PingCycleFrequency = ph.PingCycleFrequency;
+ this.PingerConfig = ph.PingerConfig;
}
public void Dispose()
@@ -433,7 +446,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
{
lock (historylocker)
{
- if (this.LastPingCycle?.isDifferent(newpc) ?? true) { this.PingStateQueue.Add(newpc); this.LastPingCycle = newpc; }
+ if (!this.PingerConfig.optimizehistorylength || (this.LastPingCycle?.isDifferent(newpc) ?? true)) { this.PingStateQueue.Add(newpc); this.LastPingCycle = newpc; }
else
{
var totalrtt = ((this.LastPingCycle.RoundtripTimeAverage * this.LastPingCycle.NumberOfCycles) + newpc.RoundtripTimeAverage);
@@ -590,7 +603,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
///
public bool isDifferent(PingCycle pc)
{
- return this.StatusCategory != pc.StatusCategory || this.RoundtripTime != pc.RoundtripTime;
+ return this.StatusCategory != pc.StatusCategory
+ || this.RoundtripTime != pc.RoundtripTime;
}
#endregion isDifferent
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
index 10491f7..03484e0 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
@@ -191,6 +191,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
ColorConsole.WriteLine((pconfig.pingcyclefrequency / 1000).ToString(), ConsoleColor.Yellow, prefix: " cycle frequency:", suffix: "sec");
ColorConsole.WriteLine((pconfig.pingeractivlength / 60000).ToString(), ConsoleColor.Yellow, prefix: " pinger liftime :", suffix: "min");
ColorConsole.WriteLine((pconfig.pingerhistorylength / 60000).ToString(), ConsoleColor.Yellow, prefix: " history length :", suffix: "min");
+ ColorConsole.WriteLine((pconfig.optimizehistorylength).ToString(), ConsoleColor.Yellow, prefix: " optimize history length :", suffix: "");
var rttlstring = (string.Join(",", pconfig.RoundTripTimeLimits)).ToString();
ColorConsole.WriteLine(rttlstring.Substring(0, rttlstring.Length>20?20: rttlstring.Length) + (rttlstring.Length > 20 ? "..." : ""), ConsoleColor.Yellow, prefix: " roundtrip time limit values :", suffix: "ms");
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
private static void DisplayPingerHistory(List selectedpingers,int firstrow,int cc)
{
if (selectedpingers == null || !selectedpingers.Any()) { return; }
- var lastrow = ColorConsole.CursorTop;
- ColorConsole.SetCursorPosition(cc,firstrow);
- for (var i= 0; i< lastrow - firstrow;i++) { ColorConsole.WriteLine(new string(' ',100)); }
ColorConsole.SetCursorPosition(cc, firstrow);
- ColorConsole.WriteLine();
- ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow);
+ ColorConsole.ClearLine();ColorConsole.WriteLine();
+ ColorConsole.ClearLine();ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow);
var cursorleftposition = ColorConsole.CursorLeft;
var cursortopposition = ColorConsole.CursorTop;
while (true)
@@ -215,8 +213,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
foreach (var pinger in selectedpingers) { pingcyclefrequency=DisplayOnePingerHistory(pinger); if (ColorConsole.KeyAvailable) { goto finishdisplayhistory; };}
var elapsed = DateTime.Now.Subtract(monitorcyclestart).TotalMilliseconds;
if (elapsed < pingcyclefrequency) { Thread.Sleep((int)((double)pingcyclefrequency - elapsed)); }
- ColorConsole.WriteLine();
- ColorConsole.WriteLine($"Press any key to exit from monitoring...", ConsoleColor.Yellow);
+ ColorConsole.ClearLine(); ColorConsole.WriteLine();
+ ColorConsole.ClearLine(); ColorConsole.WriteLine($"Press any key to exit from monitoring...", ConsoleColor.Yellow);
}
finishdisplayhistory:;
}
@@ -225,6 +223,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
var _h = pinger.GetHistory();
if (_h == null) { return 0; }
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
+ ColorConsole.ClearLine();
ColorConsole.Write(pinger.HostNameOrAddress, ConsoleColor.Yellow, suffix: ": ",prefix:" ");
var pingerstatus = pinger.Operating ? "pinging" : "still";
var pingerstatuscolor = pinger.Operating ? ConsoleColor.Green : ConsoleColor.Yellow;
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
index bd747b3..203ef90 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.8.2.0")]
-[assembly: AssemblyFileVersion("1.8.2.0")]
+[assembly: AssemblyVersion("1.8.3.0")]
+[assembly: AssemblyFileVersion("1.8.3.0")]
--
libgit2 0.21.2