Exemple #1
0
        public ICollection<EventBean> Lookup(
            EventBean[] eventsPerStream,
            ExprEvaluatorContext context)
        {
            if (context.InstrumentationProvider.Activated()) {
                context.InstrumentationProvider.QIndexSubordLookup(this, _index, _factory.KeyStreamNums);
                var keyX = GetKey(eventsPerStream, context);
                ISet<EventBean> result = _index.Lookup(keyX);
                context.InstrumentationProvider.AIndexSubordLookup(result, keyX);
                return result;
            }

            var key = GetKey(eventsPerStream, context);
            return _index.Lookup(key);
        }
        public static ISet<EventBean> SingleIndexLookup(
            ExprEvaluator[] evaluators,
            EventBean[] eventsPerStream,
            ExprEvaluatorContext exprEvaluatorContext,
            PropertyHashedEventTable index)
        {
            bool first = true;
            ISet<EventBean> result = null;

            foreach (ExprEvaluator evaluator in evaluators) {
                object key = evaluator.Evaluate(eventsPerStream, true, exprEvaluatorContext);
                ISet<EventBean> found = index.Lookup(key);
                if (found != null && !found.IsEmpty()) {
                    if (result == null) {
                        result = found;
                    }
                    else if (first) {
                        LinkedHashSet<EventBean> copy = new LinkedHashSet<EventBean>();
                        copy.AddAll(result);
                        copy.AddAll(found);
                        result = copy;
                        first = false;
                    }
                    else {
                        result.AddAll(found);
                    }
                }
            }

            return result;
        }