protected internal static TimerScheduleSpec Compute( ExprEvaluator parameter, EventBean[] events, ExprEvaluatorContext exprEvaluatorContext) { object param = PatternExpressionUtil.EvaluateChecked( NAME_OBSERVER, parameter, events, exprEvaluatorContext); string iso = (string) param; if (iso == null) { throw new ScheduleParameterException("Received null parameter value"); } return TimerScheduleISO8601Parser.Parse(iso); }
public Guard MakeGuard( PatternAgentInstanceContext context, MatchedEventMap beginState, Quitable quitable, object guardState) { var events = Convertor == null ? null : Convertor.Invoke(beginState); var parameter = PatternExpressionUtil.EvaluateChecked( "Count-to guard", NumCountToExpr, events, context.AgentInstanceContext); if (parameter == null) { throw new EPException("Count-to guard parameter evaluated to a null value"); } var numCountTo = parameter.AsInt32(); return new MyCountToPatternGuard(numCountTo, quitable); }
public EventObserver MakeObserver( PatternAgentInstanceContext context, MatchedEventMap beginState, ObserverEventEvaluator observerEventEvaluator, object observerState, bool isFilterChildNonQuitting) { var events = convertor == null ? null : convertor.Invoke(beginState); var filename = PatternExpressionUtil.EvaluateChecked( "File-exists observer ", filenameExpression, events, context.AgentInstanceContext); if (filename == null) { throw new EPException("Filename evaluated to null"); } return new MyFileExistsObserver(beginState, observerEventEvaluator, filename.ToString()); }
protected internal static TimerScheduleSpec Compute( ExprEvaluator date, ExprEvaluator repetitions, TimePeriodEval timePeriod, EventBean[] eventsPerStream, ExprEvaluatorContext exprEvaluatorContext, TimeZoneInfo timeZone, TimeAbacus timeAbacus) { DateTimeEx optionalDate = null; long? optionalRemainder = null; if (date != null) { object param = PatternExpressionUtil.EvaluateChecked( TimerScheduleObserverForge.NAME_OBSERVER, date, eventsPerStream, exprEvaluatorContext); if (param is string) { optionalDate = TimerScheduleISO8601Parser.ParseDate((string) param); } else if (TypeHelper.IsNumber(param)) { long msec = param.AsInt64(); optionalDate = DateTimeEx.GetInstance(timeZone); optionalRemainder = timeAbacus.DateTimeSet(msec, optionalDate); } else if (param is DateTimeEx dateTimeEx) { optionalDate = DateTimeEx.GetInstance(timeZone, dateTimeEx); } else if (param is DateTime dateTime) { optionalDate = DateTimeEx.GetInstance(timeZone, dateTime); } else if (param is DateTimeOffset dateTimeOffset) { optionalDate = DateTimeEx.GetInstance(timeZone, dateTimeOffset); } else if (param == null) { throw new EPException("Null date-time value returned from date evaluation"); } else { throw new EPException("Unrecognized date-time value " + param.GetType()); } } TimePeriod optionalTimePeriod = null; if (timePeriod != null) { try { optionalTimePeriod = timePeriod.TimePeriodEval(eventsPerStream, true, exprEvaluatorContext); } catch (EPException) { throw; } catch (Exception ex) { PatternExpressionUtil.HandleRuntimeEx(ex, NAME_OBSERVER); } } long? optionalRepeatCount = null; if (repetitions != null) { object param = PatternExpressionUtil.EvaluateChecked( NAME_OBSERVER, repetitions, eventsPerStream, exprEvaluatorContext); if (param != null) { optionalRepeatCount = (param).AsInt64(); } } if (optionalDate == null && optionalTimePeriod == null) { throw new EPException("Required date or time period are both null for " + NAME_OBSERVER); } return new TimerScheduleSpec(optionalDate, optionalRemainder, optionalRepeatCount, optionalTimePeriod); }