public void ProcessView( EventBean[] newData, EventBean[] oldData, bool isGenerateSynthetic) { if (newData != null) { foreach (var aNewData in newData) { EventBean[] eventsPerStream = {aNewData}; var mk = processor.GenerateGroupKeySingle(eventsPerStream, true); // if this is a newly encountered group, generate the remove stream event if (groupReps.Push(mk, eventsPerStream) == null) { if (processor.IsSelectRStream) { var @event = processor.GenerateOutputBatchedNoSortWMap( false, mk, eventsPerStream, true, isGenerateSynthetic); if (@event != null) { groupRepsOutputLastUnordRStream.Put(mk, @event); } } } processor.AggregationService.ApplyEnter(eventsPerStream, mk, processor.GetAgentInstanceContext()); } } if (oldData != null) { foreach (var anOldData in oldData) { EventBean[] eventsPerStream = {anOldData}; var mk = processor.GenerateGroupKeySingle(eventsPerStream, true); if (groupReps.Push(mk, eventsPerStream) == null) { if (processor.IsSelectRStream) { var @event = processor.GenerateOutputBatchedNoSortWMap( false, mk, eventsPerStream, false, isGenerateSynthetic); if (@event != null) { groupRepsOutputLastUnordRStream.Put(mk, @event); } } } processor.AggregationService.ApplyLeave(eventsPerStream, mk, processor.GetAgentInstanceContext()); } } }
public void ProcessView( EventBean[] newData, EventBean[] oldData, bool isGenerateSynthetic) { GenerateRemoveStreamJustOnce(isGenerateSynthetic, false); if (newData != null) { foreach (var aNewData in newData) { EventBean[] eventsPerStream = {aNewData}; var mk = processor.GenerateGroupKeySingle(eventsPerStream, true); groupReps.Put(mk, eventsPerStream); if (processor.IsSelectRStream && !groupRepsOutputLastUnordRStream.ContainsKey(mk)) { var @event = processor.GenerateOutputBatchedNoSortWMap( false, mk, eventsPerStream, true, isGenerateSynthetic); if (@event != null) { groupRepsOutputLastUnordRStream.Put(mk, @event); } } processor.AggregationService.ApplyEnter(eventsPerStream, mk, processor.GetAgentInstanceContext()); } } if (oldData != null) { foreach (var anOldData in oldData) { EventBean[] eventsPerStream = {anOldData}; var mk = processor.GenerateGroupKeySingle(eventsPerStream, true); if (processor.IsSelectRStream && !groupRepsOutputLastUnordRStream.ContainsKey(mk)) { var @event = processor.GenerateOutputBatchedNoSortWMap( false, mk, eventsPerStream, false, isGenerateSynthetic); if (@event != null) { groupRepsOutputLastUnordRStream.Put(mk, @event); } } processor.AggregationService.ApplyLeave(eventsPerStream, mk, processor.GetAgentInstanceContext()); } } }
public static IEnumerator<EventBean> For( IEnumerator<EventBean> sourceIterator, ResultSetProcessorRowPerGroup resultSetProcessor, AggregationService aggregationService, ExprEvaluatorContext exprEvaluatorContext) { var eventsPerStream = new EventBean[1]; var priorSeenGroups = new HashSet<object>(); var hasHavingClause = resultSetProcessor.HasHavingClause; while (sourceIterator.MoveNext()) { eventsPerStream[0] = sourceIterator.Current; var groupKey = resultSetProcessor.GenerateGroupKeySingle(eventsPerStream, true); aggregationService.SetCurrentAccess(groupKey, exprEvaluatorContext.AgentInstanceId, null); if (hasHavingClause) { var pass = resultSetProcessor.EvaluateHavingClause(eventsPerStream, true, exprEvaluatorContext); if (!pass) { continue; } } if (priorSeenGroups.Contains(groupKey)) { continue; } priorSeenGroups.Add(groupKey); yield return resultSetProcessor.SelectExprProcessor.Process( eventsPerStream, true, true, exprEvaluatorContext); } }