public void ProcessJoin(ISet <MultiKey <EventBean> > newEvents, ISet <MultiKey <EventBean> > oldEvents) { if (_processor.Prototype.OptionalHavingExpr == null) { if (newEvents != null && !newEvents.IsEmpty()) { _outputLastIStreamBufJoin = EventBeanUtility.GetLastInSet(newEvents); } if (oldEvents != null && !oldEvents.IsEmpty()) { _outputLastRStreamBufJoin = EventBeanUtility.GetLastInSet(oldEvents); } } else { if (newEvents != null && newEvents.Count > 0) { foreach (MultiKey <EventBean> theEvent in newEvents) { EvaluateParams eParams = new EvaluateParams(theEvent.Array, true, _processor.ExprEvaluatorContext); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QHavingClauseJoin(theEvent.Array); } var passesHaving = _processor.Prototype.OptionalHavingExpr.Evaluate(eParams); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AHavingClauseJoin(passesHaving.AsBoxedBoolean()); } if ((passesHaving == null) || (false.Equals(passesHaving))) { continue; } _outputLastIStreamBufJoin = theEvent; } } if (oldEvents != null && oldEvents.Count > 0) { foreach (MultiKey <EventBean> theEvent in oldEvents) { EvaluateParams eParams = new EvaluateParams(theEvent.Array, false, _processor.ExprEvaluatorContext); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QHavingClauseJoin(theEvent.Array); } var passesHaving = _processor.Prototype.OptionalHavingExpr.Evaluate(eParams); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AHavingClauseJoin(passesHaving.AsBoxedBoolean()); } if ((passesHaving == null) || (false.Equals(passesHaving))) { continue; } _outputLastRStreamBufJoin = theEvent; } } } }
public void ProcessJoin( ISet<MultiKeyArrayOfKeys<EventBean>> newEvents, ISet<MultiKeyArrayOfKeys<EventBean>> oldEvents) { if (!processor.HasHavingClause) { if (newEvents != null && !newEvents.IsEmpty()) { outputLastIStreamBufJoin = EventBeanUtility.GetLastInSet(newEvents); } if (oldEvents != null && !oldEvents.IsEmpty()) { outputLastRStreamBufJoin = EventBeanUtility.GetLastInSet(oldEvents); } } else { if (newEvents != null && newEvents.Count > 0) { foreach (var theEvent in newEvents) { var passesHaving = processor.EvaluateHavingClause( theEvent.Array, true, processor.GetAgentInstanceContext()); if (!passesHaving) { continue; } outputLastIStreamBufJoin = theEvent; } } if (oldEvents != null && oldEvents.Count > 0) { foreach (var theEvent in oldEvents) { var passesHaving = processor.EvaluateHavingClause( theEvent.Array, false, processor.GetAgentInstanceContext()); if (!passesHaving) { continue; } outputLastRStreamBufJoin = theEvent; } } } }