private void PostCartesian(IList <EventBean[]>[] rowsPerStream, Node node, ICollection <EventBean[]> resultFinalRows, EventBean resultRootEvent)
        {
            IList <EventBean[]> result = new List <EventBean[]>();

            CartesianUtil.ComputeCartesian(
                rowsPerStream[0], _subStreamsNumsPerChild[0],
                rowsPerStream[1], _subStreamsNumsPerChild[1],
                result);

            if (rowsPerStream.Length > 2)
            {
                for (int i = 0; i < _subStreamsNumsPerChild.Length - 2; i++)
                {
                    var product = new List <EventBean[]>();
                    CartesianUtil.ComputeCartesian(
                        result, _combinedSubStreams[i],
                        rowsPerStream[i + 2], _subStreamsNumsPerChild[i + 2],
                        product);
                    result = product;
                }
            }

            foreach (EventBean[] row in result)
            {
                ParentNode.Result(row, StreamNum, node.ParentEvent, node.Parent, resultFinalRows, resultRootEvent);
            }
        }
예제 #2
0
 private void TryCompute(IList <EventBean[]> rowsOne, IList <EventBean[]> rowsTwo)
 {
     _results.Clear();
     CartesianUtil.ComputeCartesian(rowsOne, _substreamsA, rowsTwo, _substreamsB, _results);
 }