tupleSource = tupleSource.getLeftTupleSource();
}
LeftTupleSource segmentRoot = tupleSource;
SegmentMemory smem = new SegmentMemory(segmentRoot);
// Iterate all nodes on the same segment, assigning their position as a bit mask value
// allLinkedTestMask is the resulting mask used to test if all nodes are linked in
long nodePosMask = 1;
long allLinkedTestMask = 0;
while ( true ) {
if ( NodeTypeEnums.isBetaNode( tupleSource ) ) {
BetaMemory betaMemory;
BetaNode betaNode = ( BetaNode ) tupleSource;
if ( NodeTypeEnums.AccumulateNode == tupleSource.getType() ) {
betaMemory = (( AccumulateMemory ) smem.createNodeMemory( ( AccumulateNode ) tupleSource, wm )).getBetaMemory();
} else {
betaMemory = ( BetaMemory ) smem.createNodeMemory( betaNode, wm );
}
if ( betaNode.isRightInputIsRiaNode() ) {
// we need to iterate to find correct pair
// as there may be more than one set of sub networks, due to sharing.
LeftTupleSinkNode sinkNode = betaNode.getLeftTupleSource().getSinkPropagator().getFirstLeftTupleSink();
while ( sinkNode.getNextLeftTupleSinkNode() != betaNode ) {
sinkNode = sinkNode.getNextLeftTupleSinkNode();
}
SegmentMemory subNetworkSegmentMemory = createSegmentMemory( ( LeftTupleSource ) sinkNode, wm );
betaMemory.setSubnetworkSegmentMemor( subNetworkSegmentMemory );
}
betaMemory.setSegmentMemory( smem );
betaMemory.setNodePosMaskBit( nodePosMask );