Beispiel #1
0
        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]);
        }
Beispiel #3
0
        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;
                }
            }
        }
Beispiel #4
0
 private bool IsOutOfWaiverMargin(InternalRegistrationInfo registeredRequest, TemperatureChangedEventArgs temperatureArgs)
 {
     return(Math.Abs(temperatureArgs.Temperature - registeredRequest.Threshold) > registeredRequest.WaiverMargin);
 }
Beispiel #5
0
 private bool IsThreshold(InternalRegistrationInfo registeredRequest, TemperatureChangedEventArgs temperatureArgs)
 {
     return(registeredRequest.Threshold == temperatureArgs.Temperature);
 }
Beispiel #6
0
 public void NotifyOnTempratureChanged(TemperatureChangedEventArgs temperatureChangedEventArgs)
 {
     TemperatureChanged?.Invoke(temperatureChangedEventArgs);
 }