private void ProcessValues(IEventPattern e, PatternTestResultEventPattern re)
        {
            #region Value
            if (e.Options.Value)
            {
                var prop = PropertyService.GetProperty(new LineArgs
                {
                    Path  = _path,
                    iLine = e.iLine,
                    Line  = e.Line
                });

                foreach (var valueName in e.Options.ValueParameters)
                {
                    var value = prop.FindPropertyValue(valueName);
                    if (value != null)
                    {
                        var v = new NameValue()
                        {
                            Name  = valueName,
                            Value = value,
                            Type  = Model.IDE.ValueType.Value
                        };
                        re.Values.Add(v);
                    }
                }
            }
            #endregion
        }
 public PatternTestResultEventPattern(IEventPattern e, int piLine)
 {
     Initialize(e.EventTag, e.EventType, e.Path, piLine, piLine, e.Line, e.DateTime, new TimeSpan());
     Options    = e.Options;
     Identifier = e.Identifier;
     Duration   = e.Duration;
     DurationStopIdentifiers = e.DurationStopIdentifiers;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Pushes an event to the stream, causing any
        /// subscriber to be invoked if appropriate, including
        /// subscribers for just <typeparamref name="TEvent"/>
        /// and not only <see cref="IEventPattern{TEvent}"/>.
        /// </summary>
        public void Push <TEvent>(IEventPattern <TEvent> @event)
        {
            Guard.NotNull(() => @event, @event);

            var eventType = @event.GetType();

            InvokeCompatible(@eventType, @event);
            // Invoke also for the event args itself.
            InvokeCompatible(@event.EventArgs.GetType(), @event.EventArgs);
        }
        /// <summary>
        /// Returns the next Found EventPattern.
        /// Return NULL if we are at the end of the List.
        /// </summary>
        private EventPattern GetNextEvent(List <IEventPattern> events, IEventPattern item)
        {
            var index = events.IndexOf(item) + 1;

            for (int i = index; i < events.Count; i++)
            {
                if (!events[i].Found)
                {
                    continue;
                }
                return(events[i] as EventPattern);
            }

            return(null);
        }
        private EventPattern GetPriorEventByName(List <IEventPattern> events, IEventPattern item, string eventTag)
        {
            var index = events.IndexOf(item) - 1;

            for (int i = index; i >= 0; i--)
            {
                if (!events[i].Found)
                {
                    continue;
                }
                if (events[i].EventTag != eventTag)
                {
                    continue;
                }
                return(events[i] as EventPattern);
            }
            return(null);
        }
Ejemplo n.º 6
0
        public IRuleProps CreateRuleProps(string name, IRuleTarget[] targets, IEventPattern eventPattern = null, string triggerHour = null, string triggerMinute = null, string description = null, bool enabled = true, IEventBus eventBus = null)
        {
            Schedule schedule = null;

            if (!string.IsNullOrWhiteSpace(triggerHour) || !string.IsNullOrWhiteSpace(triggerMinute))
            {
                schedule = Schedule.Cron(new CronOptions
                {
                    Hour   = triggerHour?.Length == 0 ? null : triggerHour,
                    Minute = triggerMinute?.Length == 0 ? null : triggerMinute
                });
            }

            return(new RuleProps
            {
                Description = description,
                Enabled = enabled,
                EventBus = eventBus,
                EventPattern = eventPattern,
                RuleName = name,
                Targets = targets,
                Schedule = schedule
            });
        }
Ejemplo n.º 7
0
        private void OnEvent(IEventPattern<object, EventArgs> @event)
        {
            lastEvent = @event;

            if (command != null)
                command.Value.Execute();
        }
Ejemplo n.º 8
0
 public void AddReaction(IEventPattern pattern, IReaction reaction)
 {
     reactions.Add(Tuple.Create(pattern, reaction));
 }
Ejemplo n.º 9
0
 public CommandWithEventArgs(IEventPattern<object, PropertyChangeEventArgs> e)
 {
     Event = e;
 }
        private void ProcessDuration(List <IEventPattern> events, List <PatternTestResultEventPattern> sourceEvents, IEventPattern eventPattern, PatternTestResultEventPattern re)
        {
            #region TimeToNextKnownIdle
            if (eventPattern.Options.TimeToNextKnownIdle)
            {
                var _baseLine = eventPattern.Options.TimeToNextKnownIdleParameters.ToBaseLineList().First();

                var nextEvent = GetNextEvent(events, eventPattern);
                if (nextEvent != null &&
                    eventPattern.DateTime.HasValue &&
                    nextEvent.DateTime.HasValue)
                {
                    re.DurationStopIdentifiers.Add(nextEvent.Identifier);

                    var v = new NameValue()
                    {
                        Name            = $"{Keyword._TimeToNextKnownIdle}({nextEvent.EventTag})",
                        Value           = eventPattern.DateTime.Value.Difference(nextEvent.DateTime.Value),
                        Type            = Model.IDE.ValueType.TimeToNextKnownIdle,
                        StartIdentifier = eventPattern.Identifier,
                        StopIdentifier  = nextEvent.Identifier,
                        BaselineMin     = _baseLine.Min,
                        BaselineMax     = _baseLine.Max
                    };
                    // To keep the unique value of the column, do not include time in the name
                    //if (v.Value is TimeSpan d)
                    //    re.Name = $"{re.Name} - {d.ToShortReadableString()}";
                    re.Values.Add(v);
                }
            }
            #endregion TimeToNextKnownIdle

            #region TimeToNext
            if (eventPattern.Options.TimeToNext)
            {
                var _baseLine = eventPattern.Options.TimeToNextParameters.ToBaseLineList().First();

                var nextEvent = GetNextEvent(events, eventPattern);
                if (nextEvent != null &&
                    eventPattern.DateTime.HasValue &&
                    nextEvent.DateTime.HasValue)
                {
                    re.DurationStopIdentifiers.Add(nextEvent.Identifier);

                    var v = new NameValue()
                    {
                        Name            = $"{Keyword._TimeToNext}({nextEvent.EventTag})",
                        Value           = eventPattern.DateTime.Value.Difference(nextEvent.DateTime.Value),
                        Type            = Model.IDE.ValueType.TimeToNext,
                        StartIdentifier = eventPattern.Identifier,
                        StopIdentifier  = nextEvent.Identifier,
                        BaselineMin     = _baseLine.Min,
                        BaselineMax     = _baseLine.Max
                    };
                    // To keep the unique value of the column, do not include time in the name
                    //if (v.Value is TimeSpan d)
                    //    re.Name = $"{re.Name} - {d.ToShortReadableString()}";
                    re.Values.Add(v);
                }
            }
            #endregion TimeToNext

            #region TimeToOr
            if (eventPattern.Options.TimeToOr)
            {
                // Find the EventPattern that occurs first
                EventPattern  toEventPattern   = null;
                EventBaseLine toEventParameter = null;

                var parameters = eventPattern.Options.TimeToOrParameters.ToBaseLineList();

                foreach (var param in parameters)
                {
                    var tempEvent = GetNextEventByName(events, eventPattern, param.EventName);
                    if (toEventPattern == null || tempEvent.iLine < toEventPattern.iLine)
                    {
                        toEventPattern   = tempEvent;
                        toEventParameter = param;
                    }
                }

                if (toEventPattern != null &&
                    eventPattern.DateTime.HasValue &&
                    toEventPattern.DateTime.HasValue)
                {
                    re.DurationStopIdentifiers.Add(toEventPattern.Identifier);

                    var v = new NameValue()
                    {
                        Name            = $"{Keyword._TimeToOr}({toEventPattern.EventTag})",
                        Value           = eventPattern.DateTime.Value.Difference(toEventPattern.DateTime.Value),
                        Type            = ValueType.TimeToOr,
                        StartIdentifier = re.Identifier,
                        StopIdentifier  = toEventPattern.Identifier,
                        BaselineMin     = toEventParameter.Min,
                        BaselineMax     = toEventParameter.Max
                    };
                    re.Values.Add(v);
                }
            }
            #endregion

            #region TimeTo
            if (eventPattern.Options.TimeTo)
            {
                var parameters = eventPattern.Options.TimeToParameters.ToBaseLineList();
                foreach (var param in parameters)
                {
                    var toEvent = GetNextEventByName(events, eventPattern, param.EventName);

                    if (toEvent != null &&
                        eventPattern.DateTime.HasValue &&
                        toEvent.DateTime.HasValue)
                    {
                        re.DurationStopIdentifiers.Add(toEvent.Identifier);

                        var v = new NameValue()
                        {
                            Name            = $"{Keyword._TimeTo}({toEvent.EventTag})",
                            Value           = eventPattern.DateTime.Value.Difference(toEvent.DateTime.Value),
                            Type            = ValueType.TimeTo,
                            StartIdentifier = re.Identifier,
                            StopIdentifier  = toEvent.Identifier,
                            BaselineMin     = param.Min,
                            BaselineMax     = param.Max
                        };
                        re.Values.Add(v);
                    }
                }
            }
            #endregion

            #region TimeFrom
            if (eventPattern.Options.TimeFrom)
            {
                var parameters = eventPattern.Options.TimeFromParameters.ToBaseLineList();

                foreach (var param in parameters)
                {
                    var fromEvent = GetPriorEventByName(events, eventPattern, param.EventName);

                    if (fromEvent != null &&
                        eventPattern.DateTime.HasValue &&
                        fromEvent.DateTime.HasValue)
                    {
                        FindEventResult(fromEvent, sourceEvents).DurationStopIdentifiers.Add(re.Identifier);

                        var v = new NameValue()
                        {
                            Name            = $"{Keyword._TimeFrom}({fromEvent.EventTag})",
                            Value           = fromEvent.DateTime.Value.Difference(eventPattern.DateTime.Value),
                            Type            = ValueType.TimeFrom,
                            StartIdentifier = fromEvent.Identifier,
                            StopIdentifier  = eventPattern.Identifier,
                            BaselineMin     = param.Min,
                            BaselineMax     = param.Max
                        };
                        re.Values.Add(v);
                    }
                }
            }
            #endregion
        }
Ejemplo n.º 11
0
 public IRuleProps CreateEventBridgeRuleProps(string name, IRuleTarget[] targets, IEventPattern eventPattern = null, string triggerHour = null, string triggerMinute = null, string description = null, bool enabled = true, IEventBus eventBus = null)
 {
     return(HandlerResources.AwsCdkEventBridgeHandler.CreateRuleProps(name, targets, eventPattern, triggerHour, triggerMinute, description, enabled, eventBus));
 }
Ejemplo n.º 12
0
 public void Push <TEvent>(IEventPattern <TEvent> @event)
 {
     this.PushedEvent = @event;
 }
Ejemplo n.º 13
0
 public void AddEvent(IEventPattern e)
 {
     e.Parent = this;
     Events.Add(e);
 }