Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        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);
        }