public void FireParametersChanged(DateTimeOffset time, MultiClampInterop.MulticlampData data) { var clock = new FakeClock(time); var args = new MultiClampParametersChangedArgs(clock, data); ParametersChanged(this, args); }
private static void PurgeDeviceParameters( IDictionary <DateTimeOffset, MultiClampParametersChangedArgs> parameters, MultiClampParametersChangedArgs deviceParams, TimeSpan stalenessInterval) { if (deviceParams == null) { return; } var marker = ((MultiClampParametersChangedArgs)deviceParams).TimeStamp.ToUniversalTime(); var cacheLimit = marker.Subtract(stalenessInterval); var staleParamsTimes = parameters.Keys.Where(t => t < cacheLimit).OrderBy(t => t); if (staleParamsTimes.Count() > 1) //always keep one past staleness interval { foreach (var t in staleParamsTimes.TakeWhile(t => t < staleParamsTimes.Last())) { parameters.Remove(t); } } }
private static void PurgeDeviceParameters( IDictionary<DateTimeOffset, MultiClampParametersChangedArgs> parameters, MultiClampParametersChangedArgs deviceParams, TimeSpan stalenessInterval) { if (deviceParams == null) return; var marker = ((MultiClampParametersChangedArgs)deviceParams).TimeStamp.ToUniversalTime(); var cacheLimit = marker.Subtract(stalenessInterval); var staleParamsTimes = parameters.Keys.Where(t => t < cacheLimit).OrderBy(t => t); if (staleParamsTimes.Count() > 1) //always keep one past staleness interval { foreach (var t in staleParamsTimes.TakeWhile(t => t < staleParamsTimes.Last())) { parameters.Remove(t); } } }