Esempio n. 1
0
        public int CompareTo(object obj)
        {
            TriggerToBeInvoked trig = (TriggerToBeInvoked)obj;

            if (this.Trigger.Sequence > trig.Trigger.Sequence)
            {
                return(1);
            }
            else if (this.Trigger.Sequence < trig.Trigger.Sequence)
            {
                return(-1);
            }
            else
            {
                return(0);
            }
        }
Esempio n. 2
0
        private TriggerToBeInvoked SearchForTriggerInCommandQueue(GenericTrigger trigger)
        {
            TriggerToBeInvoked triggerToBeInvoked = null;

            for (int listIndex = 0; listIndex < commandQueue.Count - trigger.TriggerCommands.Count + 1; listIndex++)
            {
                int count = 0;
                while (count < trigger.TriggerCommands.Count &&
                       trigger.SenderType == DetermineSenderType(commandQueue[listIndex + count].Sender) &&
                       commandQueue[listIndex + count].Sender.ToString().Contains(trigger.Sender) &&
                       trigger.TriggerCommands[count].Equals(commandQueue[listIndex + count].Command))
                {
                    count++;
                    if (count == trigger.TriggerCommands.Count)
                    {
                        if (!commandQueue[listIndex].ProcessedTriggers.Contains(trigger))
                        {
                            List <object> paramList = new List <object>();
                            for (int i = listIndex; i < listIndex + trigger.TriggerCommands.Count; i++)
                            {
                                if (commandQueue[i].Parameters != null)
                                {
                                    paramList.AddRange(commandQueue[i].Parameters);
                                }
                            }

                            triggerToBeInvoked         = new TriggerToBeInvoked();
                            triggerToBeInvoked.Trigger = trigger;
                            if (paramList.Count > 0)
                            {
                                triggerToBeInvoked.TriggerParameters = paramList.ToArray();
                            }

                            MarkCommandsAsProcessed(trigger, listIndex, listIndex + trigger.TriggerCommands.Count - 1);
                        }
                    }
                }
            }
            return(triggerToBeInvoked);
        }
Esempio n. 3
0
        private void InvokeTriggerIfFound()
        {
            List <TriggerToBeInvoked> triggersToBeInvoked = new List <TriggerToBeInvoked>();
            List <GenericTrigger>     listOfTriggers      = Zones.GetListOfTriggers();

            foreach (GenericTrigger trigger in listOfTriggers)
            {
                try {
                    TriggerToBeInvoked triggerToInvoke = SearchForTriggerInCommandQueue(trigger);
                    if (triggerToInvoke != null)
                    {
                        triggersToBeInvoked.Add(triggerToInvoke);
                    }
                }
                catch (Exception e) {
                    if (MessagesOccurred != null)
                    {
                        MessagesOccurred(this, e.Message);
                    }
                }
            }
            triggersToBeInvoked.Sort();
            InvokeTriggers(triggersToBeInvoked);
        }