32 std::size_t callback_counts = 0;
37 snk.set_processing_function(
38 [&](
const IntegerStamped& i) ->
bool 41 if (i.header.stamp < last_ts)
throw std::logic_error(
"Time stamp order violated");
42 last_ts = i.header.stamp;
48 src(IntegerStamped(0,
"",
ros::Time(100, 0)));
49 src(IntegerStamped(0,
"",
ros::Time(95, 0)));
50 src(IntegerStamped(0,
"",
ros::Time(98, 0)));
51 src(IntegerStamped(0,
"",
ros::Time(92, 0)));
52 src(IntegerStamped(0,
"",
ros::Time(91, 0)));
53 src(IntegerStamped(0,
"",
ros::Time(97, 0)));
54 src(IntegerStamped(0,
"",
ros::Time(50, 0)));
55 ASSERT_EQ(0u, callback_counts);
56 src(IntegerStamped(0,
"",
ros::Time(105, 0)));
57 ASSERT_EQ(3u, callback_counts);
58 src(IntegerStamped(0,
"",
ros::Time(120, 0)));
59 ASSERT_EQ(7u, callback_counts);
62 ASSERT_EQ(8u, callback_counts);
63 src(IntegerStamped(0,
"",
ros::Time(119, 0)));
65 ASSERT_EQ(8u, callback_counts);
Enforce correct temporal order.
TEST(fkie_message_filters, Sequencer)
void chain(Filter1 &flt1, Filter2 &flt2, MoreFilters &... filters) noexcept
Convenience function to chain multiple filters.
Manually operated data source.
Simplified filter with user-defined callback function.