예제 #1
0
        public ViewableActivationResult Activate(
            AgentInstanceContext agentInstanceContext,
            bool isSubselect,
            bool isRecoveringResilient)
        {
            PatternAgentInstanceContext patternAgentInstanceContext =
                agentInstanceContext.StatementContext.PatternContextFactory.CreatePatternAgentContext(
                    _patternContext, agentInstanceContext, _hasConsumingFilter);
            EvalRootNode rootNode = EvalNodeUtil.MakeRootNodeFromFactory(_rootFactoryNode, patternAgentInstanceContext);

            EventStream sourceEventStream = _isCanIterate ?
                                            (EventStream) new ZeroDepthStreamIterable(_eventType) :
                                            (EventStream) new ZeroDepthStreamNoIterate(_eventType);
            StatementContext     statementContext = _patternContext.StatementContext;
            PatternMatchCallback callback         = matchEvent =>
            {
                EventBean compositeEvent = statementContext.EventAdapterService.AdapterForTypedMap(
                    matchEvent, _eventType);
                sourceEventStream.Insert(compositeEvent);
            };

            var rootState = (EvalRootState)rootNode.Start(callback, _patternContext, isRecoveringResilient);

            return(new ViewableActivationResult(
                       sourceEventStream, rootState, null, rootState, rootState, _suppressSameEventMatches, _discardPartialsOnMatch, null));
        }
예제 #2
0
 public EvalRootState Start(PatternMatchCallback callback,
                            PatternContext context,
                            MatchedEventMap beginState,
                            bool isRecoveringResilient)
 {
     return(StartInternal(callback, context, beginState, isRecoveringResilient));
 }
예제 #3
0
 public EvalRootState Start(
     PatternMatchCallback callback,
     PatternContext context,
     bool isRecoveringResilient)
 {
     MatchedEventMap beginState = new MatchedEventMapImpl(context.MatchedEventMapMeta);
     return StartInternal(callback, context, beginState, isRecoveringResilient);
 }
예제 #4
0
        private EvalRootState StartInternal(
            PatternMatchCallback callback,
            PatternContext context,
            MatchedEventMap beginState,
            bool isRecoveringResilient)
        {
            if (beginState == null) {
                throw new ArgumentException("No pattern begin-state has been provided");
            }

            var rootStateNode = NewState(null);
            var rootState = (EvalRootState) rootStateNode;
            rootState.Callback = callback;
            rootState.StartRecoverable(isRecoveringResilient, beginState);
            return rootState;
        }