private bool checkEventTimeWindow(EventRuleCatalogEngine ercEngine, DateTime msgTimestamp) { if (ercEngine.Triggered) { if (ercEngine.EventRuleCatalog.AggregateInSec <= 0) { ercEngine.LastTriggerTime = msgTimestamp; return(true);// Always triggered } else { DateTime nextAcceptableTime = ercEngine.LastTriggerTime.AddSeconds(ercEngine.EventRuleCatalog.AggregateInSec); int result = DateTime.Compare(msgTimestamp, nextAcceptableTime); if (result > 0) { // the message timestamp is later than the next accpetable time ercEngine.LastTriggerTime = msgTimestamp; return(true); } else { return(false); } } } else { ercEngine.Triggered = true; ercEngine.LastTriggerTime = msgTimestamp; return(true); } }
private Dictionary <int, List <EventRuleCatalogEngine> > findAllEventRules(IoTHub ioTHub) { Dictionary <int, List <EventRuleCatalogEngine> > messageIdAlarmRules = new Dictionary <int, List <EventRuleCatalogEngine> >(); Dictionary <int, MessageCatalog> mcDictionary = new Dictionary <int, MessageCatalog>(); foreach (IoTDevice iotDevice in ioTHub.IoTDevice) { foreach (Equipment equipment in iotDevice.Equipment) { foreach (EquipmentClassMessageCatalog ecmc in equipment.EquipmentClass.EquipmentClassMessageCatalog) { if (mcDictionary.ContainsKey(ecmc.MessageCatalogID) != true) { mcDictionary.Add(ecmc.MessageCatalogID, ecmc.MessageCatalog); } } } } foreach (KeyValuePair <int, MessageCatalog> item in mcDictionary) { List <EventRuleCatalogEngine> arcEngineList = new List <EventRuleCatalogEngine>(); foreach (EventRuleCatalog erc in item.Value.EventRuleCatalog) { if (erc.ActiveFlag) { _consoleLog.MessageEventDebug("EventRuleCatalogId={0}", erc.Id); EventRuleCatalogEngine are = new EventRuleCatalogEngine(); are.EventRuleCatalogId = erc.Id; are.EventRuleCatalog = erc; are.RuleEngineItems = createRuleEngineItem(erc); are.LastTriggerTime = new DateTime(2017, 1, 1); are.Triggered = false; arcEngineList.Add(are); } } messageIdAlarmRules.Add(item.Key, arcEngineList); } return(messageIdAlarmRules); }