private void TemporalSubscription_NewMeasurements(object sender, EventArgs<ICollection<IMeasurement>> e)
{
ICollection<IMeasurement> measurements = e.Argument;
int total = measurements.Count;
if (total > 0)
{
m_measurementsRecoveredForDataGap += total;
m_measurementsRecoveredOverLastInterval += total;
// Publish recovered measurements back to consumer
OnRecoveredMeasurements(measurements);
// Track latest reporting time
long mostRecentRecoveredTime = measurements.Select(m => (long)m.Timestamp).Max();
if (mostRecentRecoveredTime > m_mostRecentRecoveredTime)
m_mostRecentRecoveredTime = mostRecentRecoveredTime;
}
// See if consumer has requested to stop recovery operations
if (!m_enabled)
{
OnStatusMessage(MessageLevel.Info, "Data gap recovery has been canceled.");
m_abnormalTermination = true;
m_dataGapRecoveryCompleted.Set();
m_dataStreamMonitor.Enabled = false;
}
}