Exemplo n.º 1
0
        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.GenerateOutputBatchedJoinPerKey(oldData, oldDataMultiKey, false, isGenerateSynthetic, _outputLastUnordGroupOld, null);
            }
            _processor.GenerateOutputBatchedJoinPerKey(newData, newDataMultiKey, false, isGenerateSynthetic, _outputLastUnordGroupNew, null);
        }
Exemplo n.º 2
0
        public void ProcessJoin(
            ISet<MultiKeyArrayOfKeys<EventBean>> newData,
            ISet<MultiKeyArrayOfKeys<EventBean>> oldData,
            bool isGenerateSynthetic)
        {
            var newDataMultiKey = processor.GenerateGroupKeyArrayJoin(newData, true);
            var oldDataMultiKey = processor.GenerateGroupKeyArrayJoin(oldData, false);

            if (newData != null) {
                // apply new data to aggregates
                var count = 0;
                foreach (var aNewData in newData) {
                    var mk = newDataMultiKey[count];
                    processor.AggregationService.ApplyEnter(aNewData.Array, mk, processor.GetAgentInstanceContext());
                    count++;
                }
            }

            if (oldData != null) {
                // apply old data to aggregates
                var count = 0;
                foreach (var anOldData in oldData) {
                    processor.AggregationService.ApplyLeave(
                        anOldData.Array,
                        oldDataMultiKey[count],
                        processor.GetAgentInstanceContext());
                    count++;
                }
            }

            if (processor.IsSelectRStream) {
                processor.GenerateOutputBatchedJoinPerKey(
                    oldData,
                    oldDataMultiKey,
                    false,
                    isGenerateSynthetic,
                    outputLastUnordGroupOld,
                    null);
            }

            processor.GenerateOutputBatchedJoinPerKey(
                newData,
                newDataMultiKey,
                false,
                isGenerateSynthetic,
                outputLastUnordGroupNew,
                null);
        }