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(); }
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; }
private void HandleMeterReadingReceived(MeterReadingReceived message) { _deviceProxy.Tell(message); }
public void SendMeasurement(Guid deviceId, MeterReadingReceived message) { throw new NotImplementedException(); }
private void HandleMeterReadingReceived(MeterReadingReceived message) { _normalizationActor.Forward(message); }