Ejemplo n.º 1
0
        public override OutputProcessViewBase MakeView(ResultSetProcessor resultSetProcessor, AgentInstanceContext agentInstanceContext)
        {
            // determine after-stuff
            bool isAfterConditionSatisfied    = true;
            long?afterConditionTime           = null;
            var  afterConditionNumberOfEvents = AfterConditionNumberOfEvents;

            if (afterConditionNumberOfEvents != null)
            {
                isAfterConditionSatisfied = false;
            }
            else if (AfterTimePeriod != null)
            {
                isAfterConditionSatisfied = false;
                long delta = AfterTimePeriod.NonconstEvaluator().DeltaMillisecondsUseEngineTime(null, agentInstanceContext);
                afterConditionTime = agentInstanceContext.StatementContext.TimeProvider.Time + delta;
            }

            if (_conditionType == ConditionType.SNAPSHOT)
            {
                if (base.PostProcessFactory == null)
                {
                    return(new OutputProcessViewConditionSnapshot(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext));
                }
                OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext);
                return(new OutputProcessViewConditionSnapshotPostProcess(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess));
            }
            else if (_conditionType == ConditionType.POLICY_FIRST)
            {
                if (base.PostProcessFactory == null)
                {
                    return(new OutputProcessViewConditionFirst(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext));
                }
                OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext);
                return(new OutputProcessViewConditionFirstPostProcess(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess));
            }
            else if (_conditionType == ConditionType.POLICY_LASTALL_UNORDERED)
            {
                if (base.PostProcessFactory == null)
                {
                    return(new OutputProcessViewConditionLastAllUnord(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext));
                }
                OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext);
                return(new OutputProcessViewConditionLastAllUnordPostProcessAll(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess));
            }
            else
            {
                if (base.PostProcessFactory == null)
                {
                    return(new OutputProcessViewConditionDefault(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, StreamCount > 1));
                }
                OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext);
                return(new OutputProcessViewConditionDefaultPostProcess(resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess, StreamCount > 1, _resultSetProcessorHelperFactory));
            }
        }
        public override OutputProcessView MakeView(
            ResultSetProcessor resultSetProcessor,
            AgentInstanceContext agentInstanceContext)
        {
            // determine after-stuff
            var isAfterConditionSatisfied = true;
            long? afterConditionTime = null;
            if (AfterConditionNumberOfEvents != null) {
                isAfterConditionSatisfied = false;
            }
            else if (AfterTimePeriod != null) {
                isAfterConditionSatisfied = false;
                var time = agentInstanceContext.TimeProvider.Time;
                var delta = AfterTimePeriod.DeltaAdd(time, null, true, agentInstanceContext);
                afterConditionTime = time + delta;
            }

            if (_conditionType == ResultSetProcessorOutputConditionType.SNAPSHOT) {
                if (postProcessFactory == null) {
                    return new OutputProcessViewConditionSnapshot(
                        resultSetProcessor,
                        afterConditionTime,
                        AfterConditionNumberOfEvents,
                        isAfterConditionSatisfied,
                        this,
                        agentInstanceContext);
                }

                var postProcess = postProcessFactory.Make(agentInstanceContext);
                return new OutputProcessViewConditionSnapshotPostProcess(
                    resultSetProcessor,
                    afterConditionTime,
                    AfterConditionNumberOfEvents,
                    isAfterConditionSatisfied,
                    this,
                    agentInstanceContext,
                    postProcess);
            }

            if (_conditionType == ResultSetProcessorOutputConditionType.POLICY_FIRST) {
                if (postProcessFactory == null) {
                    return new OutputProcessViewConditionFirst(
                        resultSetProcessor,
                        afterConditionTime,
                        AfterConditionNumberOfEvents,
                        isAfterConditionSatisfied,
                        this,
                        agentInstanceContext);
                }

                var postProcess = postProcessFactory.Make(agentInstanceContext);
                return new OutputProcessViewConditionFirstPostProcess(
                    resultSetProcessor,
                    afterConditionTime,
                    AfterConditionNumberOfEvents,
                    isAfterConditionSatisfied,
                    this,
                    agentInstanceContext,
                    postProcess);
            }

            if (_conditionType == ResultSetProcessorOutputConditionType.POLICY_LASTALL_UNORDERED) {
                if (postProcessFactory == null) {
                    return new OutputProcessViewConditionLastAllUnord(
                        resultSetProcessor,
                        afterConditionTime,
                        AfterConditionNumberOfEvents,
                        isAfterConditionSatisfied,
                        this,
                        agentInstanceContext);
                }

                var postProcess = postProcessFactory.Make(agentInstanceContext);
                return new OutputProcessViewConditionLastAllUnordPostProcessAll(
                    resultSetProcessor,
                    afterConditionTime,
                    AfterConditionNumberOfEvents,
                    isAfterConditionSatisfied,
                    this,
                    agentInstanceContext,
                    postProcess);
            }
            else {
                if (postProcessFactory == null) {
                    return new OutputProcessViewConditionDefault(
                        resultSetProcessor,
                        afterConditionTime,
                        AfterConditionNumberOfEvents,
                        isAfterConditionSatisfied,
                        this,
                        agentInstanceContext,
                        StreamCount > 1,
                        _eventTypes);
                }

                var postProcess = postProcessFactory.Make(agentInstanceContext);
                return new OutputProcessViewConditionDefaultPostProcess(
                    resultSetProcessor,
                    afterConditionTime,
                    AfterConditionNumberOfEvents,
                    isAfterConditionSatisfied,
                    this,
                    agentInstanceContext,
                    postProcess,
                    StreamCount > 1,
                    _eventTypes);
            }
        }