From 78f9142b3570796936fa76df34edbc1642356500 Mon Sep 17 00:00:00 2001 From: Trevor Payne Date: Tue, 18 Aug 2020 10:40:20 -0500 Subject: [PATCH] Resolves #368 Changed parsing routine to no longer use absolute indicies for 'ParseUptime' --- .../Monitoring/SystemMonitorController.cs | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Monitoring/SystemMonitorController.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Monitoring/SystemMonitorController.cs index 43a9ad9e..eadaab12 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Monitoring/SystemMonitorController.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Monitoring/SystemMonitorController.cs @@ -1,5 +1,6 @@ using System; -using System.Collections.Generic; +using System.Collections.Generic; +using System.Linq; using Crestron.SimplSharp; using Crestron.SimplSharpPro.DeviceSupport; using Crestron.SimplSharpPro.Diagnostics; @@ -100,32 +101,28 @@ namespace PepperDash.Essentials.Core.Monitoring UptimeFeedback.FireUpdate(); LastStartFeedback.FireUpdate(); - } - - private void ParseUptime(string response) + } + + private void ParseUptime(string response) { - try - { - var splitString = response.Trim().Split('\r', '\n'); + var splitString = response.Trim().Split('\r', '\n'); - var lastStartRaw = splitString[2]; + var lastStartRaw = splitString.FirstOrDefault(o => o.Contains("started")); + var uptimeRaw = splitString.FirstOrDefault(o => o.Contains("running")); + + if (!String.IsNullOrEmpty(lastStartRaw)) + { var lastStartIndex = lastStartRaw.IndexOf(':'); - _lastStart = lastStartRaw.Substring(lastStartIndex + 1).Trim(); - - var uptimeRaw = splitString[0]; - - var forIndex = uptimeRaw.IndexOf("for", StringComparison.Ordinal); - - //4 => "for " to get what's on the right - _uptime = uptimeRaw.Substring(forIndex + 4); } - catch (Exception e) - { - ErrorLog.Exception(String.Format("Exception unable to parse string '{1}'", response), e); - } - } - + + if (String.IsNullOrEmpty(uptimeRaw)) return; + var forIndex = uptimeRaw.IndexOf("for", StringComparison.Ordinal); + + //4 => "for " to get what's on the right + _uptime = uptimeRaw.Substring(forIndex + 4); + } + private void CrestronEnvironmentOnEthernetEventHandler(EthernetEventArgs ethernetEventArgs) { if (ethernetEventArgs.EthernetEventType != eEthernetEventType.LinkUp) return;