private bool IsInDirection(InternalRegistrationInfo registeredRequest, TemperatureChangedEventArgs temperatureArgs) { if (registeredRequest.ChangeDirection == Direction.None) { return(true); } return(registeredRequest.ChangeDirection == temperatureArgs.ChangeDirection); }
public double?Next() { if (_lastReadIndex >= (_inMemoryTemperatureResource.Length - 1)) { return(null); } _lastReadIndex++; TemperatureChangedEventArgs temperatureChangedEventArgs = new TemperatureChangedEventArgs(); temperatureChangedEventArgs.Temperature = _inMemoryTemperatureResource[_lastReadIndex]; temperatureChangedEventArgs.ChangeDirection = GetDirection(_lastReadIndex); NotifyOnTempratureChanged(temperatureChangedEventArgs); return(_inMemoryTemperatureResource[_lastReadIndex]); }
public void HandleTempratureChanged(TemperatureChangedEventArgs args) { Console.WriteLine("Current Temperature: " + args.Temperature); foreach (InternalRegistrationInfo registeredRequest in _registerationRequests) { if (IsThreshold(registeredRequest, args) && IsInDirection(registeredRequest, args) && !registeredRequest.IsFluctuatingAroundThreshold) { TemperatureThresholdReachedEventArgs temperatureThresholdReachedEventArgs = new TemperatureThresholdReachedEventArgs(args.Temperature, args.ChangeDirection); registeredRequest.TemperatureThresholedReachedHandler(temperatureThresholdReachedEventArgs); registeredRequest.IsFluctuatingAroundThreshold = true; } if (IsOutOfWaiverMargin(registeredRequest, args)) { registeredRequest.IsFluctuatingAroundThreshold = false; } } }
private bool IsOutOfWaiverMargin(InternalRegistrationInfo registeredRequest, TemperatureChangedEventArgs temperatureArgs) { return(Math.Abs(temperatureArgs.Temperature - registeredRequest.Threshold) > registeredRequest.WaiverMargin); }
private bool IsThreshold(InternalRegistrationInfo registeredRequest, TemperatureChangedEventArgs temperatureArgs) { return(registeredRequest.Threshold == temperatureArgs.Temperature); }
public void NotifyOnTempratureChanged(TemperatureChangedEventArgs temperatureChangedEventArgs) { TemperatureChanged?.Invoke(temperatureChangedEventArgs); }