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); } }
private void TryCompute(IList <EventBean[]> rowsOne, IList <EventBean[]> rowsTwo) { _results.Clear(); CartesianUtil.ComputeCartesian(rowsOne, _substreamsA, rowsTwo, _substreamsB, _results); }