private void SetNewReferenceValues(MeterReadingReceived message, QuarterlyConsumptionResult quarters)
 {
     _referenceDate    = quarters.NewReferenceDate;
     _referenceValue   = quarters.NewReferenceReading;
     _referenceQuarter = quarters.NewReferenceQuarter;
     _lastMessage      = message;
 }
        private void ProcessNewQuarters(MeterReadingReceived message)
        {
            var processNewQuarters = new QuarterlyConsumptionParameters
            {
                StartDate         = _referenceDate,
                StartMeterReading = _referenceValue,
                PreviousMessage   = _lastMessage,
                CurrentMessage    = message
            };

            var quarters = QuarterlyConsumptionHelper.ComputeQuarterlyConsumption(processNewQuarters);

            foreach (var quarter in quarters.Quarters)
            {
                var quarterMessage = new QuarterCompleted
                {
                    DeviceId    = message.DeviceId,
                    Timestamp   = quarter.Item1,
                    Consumption = quarter.Item2,
                    Unit        = message.Unit
                };
                DistributeMessage(quarterMessage);
            }

            SetNewReferenceValues(message, quarters);
        }
 private void SetInitialValues(MeterReadingReceived message)
 {
     _lastMessage      = message;
     _referenceDate    = message.Timestamp;
     _referenceValue   = message.MeterValue;
     _referenceQuarter = message.Timestamp.QuarterNumber();
 }
Ejemplo n.º 4
0
        private void SendNextReadingToDevice()
        {
            _currentTime  = _currentTime.AddMinutes(1);
            _currentValue = _currentValue + _random.Next(11); // 0 - 10
            var message = new MeterReadingReceived(_currentTime, _currentValue);

            Context.Parent.Tell(message);
        }
 private void HandleReturnLastMeterReading(ReturnLastNormalizedReadings message)
 {
     if (message.Readings != null && message.Readings.Any())
     {
         var reading = message.Readings.First();
         SetReferenceValues(reading.Timestamp, reading.MeterReading);
         _lastMessage = new MeterReadingReceived(reading.Timestamp, reading.MeterReading);
     }
 }
        public void Handle(MeterReadingReceived message)
        {
            if (_lastMessage == null)
            {
                SetInitialValues(message);
                return;
            }

            if (message.Timestamp.QuarterNumber() != _referenceQuarter)
            {
                ProcessNewQuarters(message);
            }
            else
            {
                _lastMessage = message;
            }
        }
 private void HandleMeterReadingReceived(MeterReadingReceived message)
 {
     if (_referenceTimestamp == null)
     {
         SetReferenceValues(message.Timestamp, message.MeterReading);
     }
     else
     {
         if (message.Timestamp.BucketNumber() > _referenceBucket)
         {
             var normalizeRequest = new NormalizedValuesParameters
             {
                 CurrentMessage    = message,
                 PreviousMessage   = _lastMessage,
                 StartDate         = _referenceTimestamp.Value,
                 StartMeterReading = _referenceReading
             };
             var result = BucketConsumptionHelper.ComputeNormalizedValues(normalizeRequest);
             ProcessNormalizationResult(result);
         }
     }
     _lastMessage = message;
 }
Ejemplo n.º 8
0
 private void HandleMeterReadingReceived(MeterReadingReceived message)
 {
     _deviceProxy.Tell(message);
 }
Ejemplo n.º 9
0
 public void SendMeasurement(Guid deviceId, MeterReadingReceived message)
 {
     throw new NotImplementedException();
 }
 private void HandleMeterReadingReceived(MeterReadingReceived message)
 {
     _normalizationActor.Forward(message);
 }