/// <summary> /// Process the return from the store, getting a the last known time an event fired. /// </summary> protected void LastEventDateTimeRecordset(dynamic signalRecordset) { foreach (dynamic signal in signalRecordset.Records) { string eventName = signal.EventName; DateTime eventDateTime = signal.EventDateTime; // If the interval timer doesn't exist yet, then create a placeholder. if (!intervalMap.ContainsKey(eventName)) { intervalMap[eventName] = new IntervalTimer(rsys, this) { EventName = eventName, LastEventTime = eventDateTime, PreExisting = true }; } else { // If it does exist but it's not running yet, update the last event time. if (!intervalMap[eventName].Running) { intervalMap[eventName].LastEventTime = eventDateTime; intervalMap[eventName].PreExisting = true; } } } // Now that we know where we're at, we can fire expired events. FireExpiredEvents(); ready = true; }
/// <summary> /// Process a configuration carrier, which will add a new timer event. /// </summary> /// <param name="signal"></param> protected void IntervalTimerConfiguration(dynamic signal) { string eventName = signal.EventName; // If the interval timer does not exist, create it now. if (!intervalMap.ContainsKey(eventName)) { IntervalTimer interval = new IntervalTimer(rsys, this) { StartDateTime = signal.StartDateTime, Interval = signal.Interval, EventName = signal.EventName, IgnoreMissedIntervals = signal.IgnoreMissedIntervals, PreExisting = false }; intervalMap[eventName] = interval; } else { // We already have an interval timer for this event. Fill in the missing pieces. intervalMap[eventName].StartDateTime = signal.StartDateTime; intervalMap[eventName].Interval = signal.Interval; intervalMap[eventName].IgnoreMissedIntervals = signal.IgnoreMissedIntervals; } FireExpiredEvents(); }