Example #1
0
 public ExprPreviousEvalStrategyCount(int streamNumber,
                                      RandomAccessByIndexGetter randomAccessGetter,
                                      RelativeAccessByEventNIndexMap relativeAccessGetter)
 {
     _streamNumber         = streamNumber;
     _randomAccessGetter   = randomAccessGetter;
     _relativeAccessGetter = relativeAccessGetter;
 }
 public ExprPreviousEvalStrategyWindow(int streamNumber, ExprEvaluator evalNode, Type componentType, RandomAccessByIndexGetter randomAccessGetter, RelativeAccessByEventNIndexMap relativeAccessGetter)
 {
     _streamNumber         = streamNumber;
     _evalNode             = evalNode;
     _componentType        = componentType;
     _randomAccessGetter   = randomAccessGetter;
     _relativeAccessGetter = relativeAccessGetter;
 }
Example #3
0
        public static IStreamSortRankRandomAccess GetOptPreviousExprSortedRankedAccess(AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext)
        {
            IStreamSortRankRandomAccess rankedRandomAccess = null;

            if (agentInstanceViewFactoryContext.PreviousNodeGetter != null)
            {
                RandomAccessByIndexGetter getter = (RandomAccessByIndexGetter)agentInstanceViewFactoryContext.PreviousNodeGetter;
                rankedRandomAccess = new IStreamSortRankRandomAccess(getter);
                getter.Updated(rankedRandomAccess);
            }

            return(rankedRandomAccess);
        }
Example #4
0
        private static void HandlePrevious(IList <ExprPreviousNode> previousRequests, Object previousNodeGetter, IDictionary <ExprPreviousNode, ExprPreviousEvalStrategy> strategies)
        {
            if (previousRequests.IsEmpty())
            {
                return;
            }

            RandomAccessByIndexGetter      randomAccessGetter   = null;
            RelativeAccessByEventNIndexMap relativeAccessGetter = null;

            if (previousNodeGetter is RandomAccessByIndexGetter)
            {
                randomAccessGetter = (RandomAccessByIndexGetter)previousNodeGetter;
            }
            else if (previousNodeGetter is RelativeAccessByEventNIndexMap)
            {
                relativeAccessGetter = (RelativeAccessByEventNIndexMap)previousNodeGetter;
            }
            else
            {
                throw new EPException("Unexpected 'previous' handler: " + previousNodeGetter);
            }

            foreach (ExprPreviousNode previousNode in previousRequests)
            {
                int streamNumber = previousNode.StreamNumber;
                ExprPreviousNodePreviousType previousType = previousNode.PreviousType;
                ExprPreviousEvalStrategy     evaluator;

                if (previousType == ExprPreviousNodePreviousType.PREVWINDOW)
                {
                    evaluator = new ExprPreviousEvalStrategyWindow(streamNumber, previousNode.ChildNodes[1].ExprEvaluator, previousNode.ReturnType.GetElementType(),
                                                                   randomAccessGetter, relativeAccessGetter);
                }
                else if (previousType == ExprPreviousNodePreviousType.PREVCOUNT)
                {
                    evaluator = new ExprPreviousEvalStrategyCount(streamNumber, randomAccessGetter, relativeAccessGetter);
                }
                else
                {
                    evaluator = new ExprPreviousEvalStrategyPrev(streamNumber, previousNode.ChildNodes[0].ExprEvaluator, previousNode.ChildNodes[1].ExprEvaluator,
                                                                 randomAccessGetter, relativeAccessGetter, previousNode.IsConstantIndex, previousNode.ConstantIndexNumber, previousType == ExprPreviousNodePreviousType.PREVTAIL);
                }

                strategies.Put(previousNode, evaluator);
            }
        }
 public ExprPreviousEvalStrategyPrev(int streamNumber,
                                     ExprEvaluator indexNode,
                                     ExprEvaluator evalNode,
                                     RandomAccessByIndexGetter randomAccessGetter,
                                     RelativeAccessByEventNIndexMap relativeAccessGetter,
                                     bool constantIndex,
                                     int?constantIndexNumber,
                                     bool tail)
 {
     _streamNumber         = streamNumber;
     _indexNode            = indexNode;
     _evalNode             = evalNode;
     _randomAccessGetter   = randomAccessGetter;
     _relativeAccessGetter = relativeAccessGetter;
     _isConstantIndex      = constantIndex;
     _constantIndexNumber  = constantIndexNumber;
     _isTail = tail;
 }
Example #6
0
 public ExprPreviousEvalStrategyPrev(
     int streamNumber,
     ExprEvaluator indexNode,
     ExprEvaluator evalNode,
     RandomAccessByIndexGetter randomAccessGetter,
     RelativeAccessByEventNIndexGetter relativeAccessGetter,
     bool constantIndex,
     int? constantIndexNumber,
     bool tail)
 {
     this.streamNumber = streamNumber;
     this.indexNode = indexNode;
     this.evalNode = evalNode;
     this.randomAccessGetter = randomAccessGetter;
     this.relativeAccessGetter = relativeAccessGetter;
     isConstantIndex = constantIndex;
     this.constantIndexNumber = constantIndexNumber;
     isTail = tail;
 }