public void ProcessJoin(ISet <MultiKey <EventBean> > newData, ISet <MultiKey <EventBean> > oldData, bool isGenerateSynthetic) { object[] newDataMultiKey = _processor.GenerateGroupKeys(newData, true); object[] oldDataMultiKey = _processor.GenerateGroupKeys(oldData, false); if (newData != null) { // apply new data to aggregates int count = 0; foreach (MultiKey <EventBean> aNewData in newData) { object mk = newDataMultiKey[count]; _processor.AggregationService.ApplyEnter(aNewData.Array, mk, _processor.AgentInstanceContext); count++; } } if (oldData != null) { // apply old data to aggregates int count = 0; foreach (MultiKey <EventBean> anOldData in oldData) { _processor.AggregationService.ApplyLeave(anOldData.Array, oldDataMultiKey[count], _processor.AgentInstanceContext); count++; } } if (_processor.Prototype.IsSelectRStream) { _processor.GenerateOutputBatchedJoin(oldData, oldDataMultiKey, false, isGenerateSynthetic, _outputLastUnordGroupOld, null); } _processor.GenerateOutputBatchedJoin(newData, newDataMultiKey, false, isGenerateSynthetic, _outputLastUnordGroupNew, null); }
public void ProcessJoin(ISet <MultiKey <EventBean> > newData, ISet <MultiKey <EventBean> > oldData, bool isGenerateSynthetic) { object[] newDataMultiKey = _processor.GenerateGroupKeys(newData, true); object[] oldDataMultiKey = _processor.GenerateGroupKeys(oldData, false); ISet <object> keysSeenRemoved = new HashSet <object>(); if (newData != null) { // apply new data to aggregates int count = 0; foreach (MultiKey <EventBean> aNewData in newData) { object mk = newDataMultiKey[count]; _repsPerGroup.Put(mk, aNewData.Array); _lastSeenKeys.Add(mk); _processor.AggregationService.ApplyEnter(aNewData.Array, mk, _processor.AgentInstanceContext); count++; } } if (oldData != null) { // apply old data to aggregates int count = 0; foreach (MultiKey <EventBean> anOldData in oldData) { object mk = oldDataMultiKey[count]; _lastSeenKeys.Add(mk); keysSeenRemoved.Add(mk); _processor.AggregationService.ApplyLeave(anOldData.Array, oldDataMultiKey[count], _processor.AgentInstanceContext); count++; } } if (_processor.Prototype.IsSelectRStream) { _processor.GenerateOutputBatchedJoin(oldData, oldDataMultiKey, false, isGenerateSynthetic, _eventsOld, null); } _processor.GenerateOutputBatchedJoin(newData, newDataMultiKey, false, isGenerateSynthetic, _eventsNew, null); foreach (object keySeen in keysSeenRemoved) { EventBean newEvent = _processor.GenerateOutputBatchedSingle(keySeen, _repsPerGroup.Get(keySeen), true, isGenerateSynthetic); if (newEvent != null) { _eventsNew.Add(newEvent); } } }