20 #ifndef INCLUDE_FKIE_MESSAGE_FILTERS_DIVIDER_H_ 21 #define INCLUDE_FKIE_MESSAGE_FILTERS_DIVIDER_H_ 58 template<
class... Inputs>
68 template<std::
size_t N>
71 template<
std::
size_t N>
72 const SourceType<N>&
source() const noexcept;
89 void receive (const Inputs&... in) override;
95 void forward(
const Input& in);
98 template<std::size_t N,
typename ThisInput,
typename... OtherInputs>
100 template<std::
size_t N>
102 template<std::size_t N,
typename ThisSink,
typename... OtherSinks>
104 template<std::
size_t N>
108 template<
class... Inputs>
std::tuple_element_t< N, std::tuple< Ts... > > select_nth
Base class for data consumers.
static constexpr std::size_t NUM_INPUTS
Number of input arguments.
SourceType< N > & source() noexcept
Access the source for the Nth data element.
Base class for data providers.
void receive(const Inputs &... in) override
Process incoming data.
Group multiple data types as filter input or output.
IO< Inputs... > Input
Grouped input types.
Split an N-ary source into N unary ones.
void disconnect() noexcept override
Disconnect from all connected sources and sinks.
helpers::select_nth< N, Source< Inputs >... > SourceType
Base class of the Nth source.
std::tuple< DividerSource< Inputs >... > sources_
void forward_to_sources()
std::array< Connection, NUM_INPUTS > Connections
Array of connection objects.
void connect_to_sinks_impl(Connections &conn, ThisSink &sink, OtherSinks &... sinks) noexcept
Connections connect_to_sinks(Sink< Inputs > &... sinks) noexcept
Convenience function to connect all sources at once.
void disconnect_from_all_sinks() noexcept
Disconnect all sources from their sinks.