Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }