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; }
/// <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); }
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 }); }
private void OnEvent(IEventPattern<object, EventArgs> @event) { lastEvent = @event; if (command != null) command.Value.Execute(); }
public void AddReaction(IEventPattern pattern, IReaction reaction) { reactions.Add(Tuple.Create(pattern, reaction)); }
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 }
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)); }
public void Push <TEvent>(IEventPattern <TEvent> @event) { this.PushedEvent = @event; }
public void AddEvent(IEventPattern e) { e.Parent = this; Events.Add(e); }