public override bool Handle(EventBean theEvent, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.Get().QSplitStream(true, theEvent, WhereClauses);
            }

            bool isHandled = false;

            for (int i = 0; i < WhereClauses.Length; i++)
            {
                EPStatementStartMethodOnTriggerItem currentItem = Items[i];
                EventsPerStream[0] = theEvent;

                // handle no-contained-event evaluation
                if (currentItem.PropertyEvaluator == null)
                {
                    isHandled |= ProcessAllCurrentEvent(i, exprEvaluatorContext);
                }
                else
                {
                    // handle contained-event evaluation
                    EventBean[] containeds = currentItem.PropertyEvaluator.GetProperty(
                        EventsPerStream[0], exprEvaluatorContext);
                    if (containeds == null || containeds.Length == 0)
                    {
                        continue;
                    }

                    foreach (EventBean contained in containeds)
                    {
                        EventsPerStream[0] = contained;
                        isHandled         |= ProcessAllCurrentEvent(i, exprEvaluatorContext);
                    }
                }
            }

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.Get().ASplitStream(true, isHandled);
            }
            return(isHandled);
        }
Example #2
0
        public override bool Handle(EventBean theEvent, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.Get().QSplitStream(false, theEvent, WhereClauses);
            }

            int index = -1;

            for (int i = 0; i < WhereClauses.Length; i++)
            {
                EPStatementStartMethodOnTriggerItem item = Items[i];
                EventsPerStream[0] = theEvent;

                // handle no contained-event evaluation
                if (item.PropertyEvaluator == null)
                {
                    bool pass = CheckWhereClauseCurrentEvent(i, exprEvaluatorContext);
                    if (pass)
                    {
                        index = i;
                        break;
                    }
                }
                else
                {
                    // need to get contained events first
                    EventBean[] containeds = Items[i].PropertyEvaluator.GetProperty(
                        EventsPerStream[0], exprEvaluatorContext);
                    if (containeds == null || containeds.Length == 0)
                    {
                        continue;
                    }

                    foreach (EventBean contained in containeds)
                    {
                        EventsPerStream[0] = contained;
                        bool pass = CheckWhereClauseCurrentEvent(i, exprEvaluatorContext);
                        if (pass)
                        {
                            index = i;
                            break;
                        }
                    }

                    if (index != -1)
                    {
                        break;
                    }
                }
            }

            if (index != -1)
            {
                MayRouteCurrentEvent(index, exprEvaluatorContext);
            }

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.Get().ASplitStream(false, index != -1);
            }
            return(index != -1);
        }