21 #ifndef INCLUDE_FKIE_MESSAGE_FILTERS_SEQUENCER_IMPL_H_
22 #define INCLUDE_FKIE_MESSAGE_FILTERS_SEQUENCER_IMPL_H_
33 template<
class... Inputs>
35 : max_delay_(max_delay)
39 template<
class... Inputs>
42 std::lock_guard<std::mutex> lock{mutex_};
43 max_delay_ = max_delay;
46 template<
class... Inputs>
49 std::lock_guard<std::mutex> lock{mutex_};
51 cutoff_ = std::max(cutoff_, stamp - max_delay_);
52 if (stamp < cutoff_)
return;
54 auto ub = queue_.upper_bound(cutoff_);
55 std::list<QueueElement> out;
56 std::for_each(queue_.begin(), ub, [&out](
auto q) { out.push_back(q.second); });
57 queue_.erase(queue_.begin(), ub);
62 [
this, &e](
auto... Is)
64 this->send(std::get<Is>(e)...);
70 template<
class... Inputs>
73 std::list<QueueElement> out;
74 std::for_each(queue_.begin(), queue_.end(), [&out](
auto q) { out.push_back(q.second); });
77 for (
const QueueElement& e : out)
81 [
this, &e](
auto... Is)
83 this->send(std::get<Is>(e)...);
89 template<
class... Inputs>
92 std::lock_guard<std::mutex> lock{mutex_};