Topology Join only works when Tuple Format from two streams is identical
If ".join" is used, tuple format from both streams (that are joined) have to be identical, else the following error occurs:
[...]
error #308: member "pfabric::Pipe::keyExtractor [with T=myTuplePtr]" (declared at line 87) is inaccessible
RKeyExtractorFunc fn2 = boost::any_cast(otherPipe.keyExtractor);
[...]
and (if keyExtractor made public)
[...]
error #308: function "pfabric::Pipe::getPublisher [with T=myFirstTuplePtr]" (declared at line 130) is inaccessible
auto otherOp = castOperator<DataSource>(otherPipe.getPublisher());
[...]
Workaround: In Pipe.hpp, make the following definitions "public" instead of "private":
boost::any keyExtractor;
(defined in line 87)
Dataflow::BaseOpPtr getPublisher() {
BOOST_ASSERT_MSG(tailIter != dataflow->publisherEnd(), "No DataSource available in dataflow");
return *tailIter;
}
(defined in lines 130-133)
Maybe get a better solution for this?