FKIE Message Filters
Improved filters for processing ROS messages
|
Split an N-ary source into N unary ones. More...
#include <fkie_message_filters/divider.h>
Public Types | |
using | Connections = std::array< Connection, NUM_INPUTS > |
Array of connection objects. | |
using | Input = IO< Inputs... > |
Grouped input types. More... | |
template<std::size_t N> | |
using | SourceType = helpers::select_nth< N, Source< Inputs >... > |
Base class of the Nth source. | |
Public Member Functions | |
Connections | connect_to_sinks (Sink< Inputs > &... sinks) noexcept |
Convenience function to connect all sources at once. More... | |
Connection | connect_to_source (Source< Inputs... > &src) noexcept |
Connect this sink to a source. More... | |
void | disconnect () noexcept override |
Disconnect from all connected sources and sinks. More... | |
void | disconnect_from_all_sinks () noexcept |
Disconnect all sources from their sinks. More... | |
void | disconnect_from_all_sources () noexcept |
Disconnect from all connected sources. More... | |
virtual void | reset () noexcept |
Reset filter state. More... | |
template<std::size_t N> | |
SourceType< N > & | source () noexcept |
Access the source for the Nth data element. | |
template<std::size_t N> | |
const SourceType< N > & | source () const noexcept |
Access the source for the Nth data element. | |
Static Public Attributes | |
static constexpr std::size_t | NUM_INPUTS |
Number of input arguments. | |
Protected Member Functions | |
void | receive (const Inputs &... in) override |
Process incoming data. More... | |
Split an N-ary source into N unary ones.
The divider splits an N-ary source into its constituent elements, so they can be processed independently. It is mostly used as the penultimate pipeline filter to forward message tuples to independent Publisher instances.
Technically, the divider acts as one sink and N sources, one for each data type that is passed in. You can connect the sources independently using the source() function.
The divider will always completely separate the input arguments. If you want a partial split only, you should use one or more Selector filters instead.
|
inherited |
Grouped input types.
This type can be used to define sources with matching types.
|
noexcept |
Convenience function to connect all sources at once.
|
noexceptinherited |
Connect this sink to a source.
Can be called multiple times to connect multiple sources; in that case, the sink receives data from all connected sources. This function does basically the same thing as Source::connect_to_sink(), only from the opposite point of view.
src
the source that is to be connected
|
overridevirtualnoexcept |
Disconnect from all connected sources and sinks.
Reimplemented from fkie_message_filters::Sink< Inputs... >.
|
noexcept |
Disconnect all sources from their sinks.
|
noexceptinherited |
Disconnect from all connected sources.
Severs the connection to all sources. The receive() method will not be called any more.
|
overrideprotectedvirtual |
Process incoming data.
Derived classes need to override this method to handle all data that is to be consumed by the sink.
Implements fkie_message_filters::Sink< Inputs... >.
|
inlinevirtualnoexceptinherited |
Reset filter state.
For stateful filters, this method resets the internal state as if the filter had just been created. Existing connections to sources and sinks are unaffected.
The default implementation does nothing.
Reimplemented in fkie_message_filters::Buffer< Inputs >, fkie_message_filters::Buffer< Inputs... >, fkie_message_filters::TfFilter< Inputs >, fkie_message_filters::TfFilter< Inputs... >, fkie_message_filters::Combiner< PolicyTmpl, IOs >, fkie_message_filters::Sequencer< Inputs >, and fkie_message_filters::Sequencer< Inputs... >.