21 #ifndef INCLUDE_FKIE_MESSAGE_FILTERS_COMBINER_POLICIES_EXACT_TIME_H_ 22 #define INCLUDE_FKIE_MESSAGE_FILTERS_COMBINER_POLICIES_EXACT_TIME_H_ 31 namespace combiner_policies
49 template<
typename... IOs>
87 template<std::
size_t N>
88 void add(std::unique_lock<std::mutex>&,
const std::tuple_element_t<N, IncomingTuples>&);
89 void reset() noexcept override;
102 #include "exact_time_impl.h" Base class for combiner policies.
std::tuple< helpers::io_tuple_t< IOs >... > IncomingTuples
Tuple type of incoming data tuples.
std::function< void(const OutgoingTuple &)> EmitterCB
Callback for assembled outputs.
ExactTime & set_max_queue_size(std::size_t queue_size, const boost::optional< ros::Duration > &max_age=boost::none) noexcept
Set maximum queue size.
std::tuple< boost::optional< helpers::io_tuple_t< IOs > >... > MaybeOutgoingTuples
Tuple of outgoing tuple candidates.
helpers::io_tuple_t< helpers::io_concat_t< IOs... > > OutgoingTuple
Combined tuple type for data output.
void reset() noexcept override
Reset internal state.
std::size_t max_queue_size_
typename io_tuple< IO >::type io_tuple_t
std::tuple< std::map< ros::Time, helpers::io_tuple_t< IOs > >... > IncomingQueues
MaybeOutgoingTuples try_assemble_output(const ros::Time &time, bool &complete) noexcept
void add(std::unique_lock< std::mutex > &, const std::tuple_element_t< N, IncomingTuples > &)
Input function.
Combine multiple sources into a single one.
boost::optional< ros::Duration > max_age_
ExactTime & set_max_age(const ros::Duration &max_age) noexcept
Set maximum age of any data in the queue.