diff --git a/CHANGELOG.md b/CHANGELOG.md index cd096c3..51a17c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - Added GetParentUri method to UriExtensions +## [14.1.0] - 2021-01-21 +### Added + - Added overload to GuidUtils that takes an enumerable of guids and combines them into a new deterministic guid + +### Changed + - A SafeTimer constructor that executes the callback immediately now does this instead of waiting infinitely + ## [14.0.0] - 2021-01-14 ### Added - Added Get and Set extensions to PropertyInfo in SIMPLSHARP to mimic overloads avaliable in NETSTANDARD diff --git a/ICD.Common.Utils/GuidUtils.cs b/ICD.Common.Utils/GuidUtils.cs index 045c9fa..9edcc31 100644 --- a/ICD.Common.Utils/GuidUtils.cs +++ b/ICD.Common.Utils/GuidUtils.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using ICD.Common.Utils.Extensions; namespace ICD.Common.Utils { @@ -30,5 +32,13 @@ namespace ICD.Common.Utils return new Guid(aBytes); } + + /// + /// Combines the guids in the given order to make a new, deterministic guid. + /// + public static Guid Combine(IEnumerable guids) + { + return guids.AggregateOrDefault(Combine, default(Guid)); + } } } diff --git a/ICD.Common.Utils/Properties/AssemblyInfo.cs b/ICD.Common.Utils/Properties/AssemblyInfo.cs index a8f68e5..8d23892 100644 --- a/ICD.Common.Utils/Properties/AssemblyInfo.cs +++ b/ICD.Common.Utils/Properties/AssemblyInfo.cs @@ -4,4 +4,4 @@ using System.Reflection; [assembly: AssemblyCompany("ICD Systems")] [assembly: AssemblyProduct("ICD.Common.Utils")] [assembly: AssemblyCopyright("Copyright © ICD Systems 2021")] -[assembly: AssemblyVersion("14.0.0.0")] +[assembly: AssemblyVersion("14.1.0.0")] diff --git a/ICD.Common.Utils/Services/Scheduler/ActionSchedulerService.cs b/ICD.Common.Utils/Services/Scheduler/ActionSchedulerService.cs index 868eee1..dd65352 100644 --- a/ICD.Common.Utils/Services/Scheduler/ActionSchedulerService.cs +++ b/ICD.Common.Utils/Services/Scheduler/ActionSchedulerService.cs @@ -18,9 +18,9 @@ namespace ICD.Common.Utils.Services.Scheduler public ActionSchedulerService() { m_Actions = new List(); - m_Timer = new SafeTimer(TimerCallback, -1); m_CriticalSection = new SafeCriticalSection(); m_LastRunTime = DateTime.MinValue; + m_Timer = SafeTimer.Stopped(TimerCallback); } public void Dispose() @@ -153,15 +153,6 @@ namespace ICD.Common.Utils.Services.Scheduler } } - private void Log(eSeverity severity, string message, params object[] args) - { - ILoggerService logger = ServiceProvider.TryGetService(); - if (logger == null) - return; - - logger.AddEntry(severity, string.Format("{0} - {1}", this, message), args); - } - private void Log(eSeverity severity, Exception ex, string message, params object[] args) { ILoggerService logger = ServiceProvider.TryGetService(); diff --git a/ICD.Common.Utils/Timers/SafeTimer.cs b/ICD.Common.Utils/Timers/SafeTimer.cs index 254b42d..3bc3db2 100644 --- a/ICD.Common.Utils/Timers/SafeTimer.cs +++ b/ICD.Common.Utils/Timers/SafeTimer.cs @@ -36,7 +36,7 @@ namespace ICD.Common.Utils.Timers /// /// public SafeTimer(Action callback, long repeatPeriod) - : this(callback, -1, repeatPeriod) + : this(callback, 0, repeatPeriod) { } @@ -138,7 +138,7 @@ namespace ICD.Common.Utils.Timers if (repeatPeriod < 0 && repeatPeriod != Timeout.Infinite) throw new ArgumentOutOfRangeException("repeatPeriod", "Repeat period must be greater than or equal to 0ms"); - if (dueTime >= int.MaxValue) + if (repeatPeriod >= int.MaxValue) throw new ArgumentOutOfRangeException("repeatPeriod", string.Format("Repeat period must be less than {0:n0}ms", int.MaxValue)); #if SIMPLSHARP