示例#1
0
 internal ViewableActivatorPattern(
     PatternContext patternContext,
     EvalRootFactoryNode rootFactoryNode,
     EventType eventType,
     bool hasConsumingFilter,
     bool suppressSameEventMatches,
     bool discardPartialsOnMatch,
     bool isCanIterate)
 {
     _patternContext           = patternContext;
     _rootFactoryNode          = rootFactoryNode;
     _eventType                = eventType;
     _hasConsumingFilter       = hasConsumingFilter;
     _suppressSameEventMatches = suppressSameEventMatches;
     _discardPartialsOnMatch   = discardPartialsOnMatch;
     _isCanIterate             = isCanIterate;
 }
        public void Activate(EventBean optionalTriggeringEvent, MatchedEventMap priorMatches, long timeOffset, bool isRecoveringResilient)
        {
            if (PatternStopCallback != null)
            {
                PatternStopCallback.Stop();
            }

            PatternStreamSpecCompiled patternStreamSpec = _endpointPatternSpec.PatternCompiled;
            StatementContext          stmtContext       = _agentInstanceContext.StatementContext;

            EvalRootFactoryNode rootFactoryNode = _servicesContext.PatternNodeFactory.MakeRootNode(patternStreamSpec.EvalFactoryNode);
            int            streamNum            = _isStartEndpoint ? _contextStatePathKey.SubPath : -1 * _contextStatePathKey.SubPath;
            bool           allowResilient       = _contextStatePathKey.Level == 1;
            PatternContext patternContext       = stmtContext.PatternContextFactory.CreateContext(stmtContext, streamNum, rootFactoryNode, new MatchedEventMapMeta(patternStreamSpec.AllTags, !patternStreamSpec.ArrayEventTypes.IsEmpty()), allowResilient);

            PatternAgentInstanceContext patternAgentInstanceContext = stmtContext.PatternContextFactory.CreatePatternAgentContext(patternContext, _agentInstanceContext, false);
            EvalRootNode rootNode = EvalNodeUtil.MakeRootNodeFromFactory(rootFactoryNode, patternAgentInstanceContext);

            if (priorMatches == null)
            {
                priorMatches = new MatchedEventMapImpl(patternContext.MatchedEventMapMeta);
            }

            // capture any callbacks that may occur right after start
            ConditionPatternMatchCallback callback = new ConditionPatternMatchCallback(this);

            PatternStopCallback   = rootNode.Start(callback.MatchFound, patternContext, priorMatches, isRecoveringResilient);
            callback.ForwardCalls = true;

            if (_agentInstanceContext.StatementContext.StatementExtensionServicesContext != null &&
                _agentInstanceContext.StatementContext.StatementExtensionServicesContext.StmtResources != null)
            {
                _agentInstanceContext.StatementContext.StatementExtensionServicesContext.StmtResources
                .StartContextPattern(PatternStopCallback, _isStartEndpoint, _contextStatePathKey);
            }

            if (callback.IsInvoked)
            {
                MatchFound(Collections.GetEmptyMap <String, Object>());
            }
        }
        public ViewableActivator CreatePattern(
            PatternContext patternContext,
            EvalRootFactoryNode rootFactoryNode,
            EventType eventType,
            bool consumingFilters,
            bool suppressSameEventMatches,
            bool discardPartialsOnMatch,
            bool isCanIterateUnbound)
        {
            if (ProcCreatePattern == null)
            {
                throw new NotSupportedException();
            }

            return(ProcCreatePattern.Invoke(
                       patternContext,
                       rootFactoryNode,
                       eventType,
                       consumingFilters,
                       suppressSameEventMatches,
                       discardPartialsOnMatch,
                       isCanIterateUnbound));
        }
示例#4
0
 public static EvalRootNode MakeRootNodeFromFactory(
     EvalRootFactoryNode rootFactoryNode,
     PatternAgentInstanceContext patternAgentInstanceContext)
 {
     return((EvalRootNode)rootFactoryNode.MakeEvalNode(patternAgentInstanceContext, null));
 }
 public ViewableActivator CreatePattern(PatternContext patternContext, EvalRootFactoryNode rootFactoryNode, EventType eventType, bool consumingFilters, bool suppressSameEventMatches, bool discardPartialsOnMatch, bool isCanIterateUnbound)
 {
     return(new ViewableActivatorPattern(patternContext, rootFactoryNode, eventType, consumingFilters, suppressSameEventMatches, discardPartialsOnMatch, isCanIterateUnbound));
 }