/// <summary> /// Applies a custom alarm alert for the given alarm. /// </summary> /// <param name="alarm">Alarm.</param> /// <param name="alertMode">alarm alert. Null allowed.</param> public void SetAlertModeForAlarm(IAlarm alarm, IAlarmAlert alertMode) { if (__alertMapping.ContainsKey(alarm)) { var alert = __alertMapping[alarm]; alert.Stop(); __firingAlerts.Remove(alert); } __alertMapping[alarm] = alertMode; }
/// <summary> /// The function that is called when a registered alarm is triggered. /// </summary> /// <param name="alarm">Alarm.</param> private void FireAlarmAlerts(IAlarm alarm) { // Contension should never happen. lock (this) { IAlarmAlert alert = null; if (__alertMapping.ContainsKey(alarm)) { alert = __alertMapping[alarm]; alert.Stop(); } else { alert = alertFactory(this, alarm); __alertMapping[alarm] = alert; } __firingAlerts.Add(alert); alert.Start(); } }