From 3e191ac65bd65f678e9a344163f74d181726f6bd Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期二, 13 四月 2021 08:48:40 +0800 Subject: [PATCH] refactor, add TODO. --- src/timed_queue.h | 36 +++++++++++++++++++++++++----------- 1 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/timed_queue.h b/src/timed_queue.h index 14e318d..b2a941b 100644 --- a/src/timed_queue.h +++ b/src/timed_queue.h @@ -24,23 +24,37 @@ #include <string> template <class Data, class ClockType = std::chrono::steady_clock> -class TimedQueue +class TimedData { public: typedef ClockType Clock; typedef typename Clock::time_point TimePoint; typedef typename Clock::duration Duration; + TimedData(const TimePoint &expire, const Data &data) : + expire_(expire), data_(data) {} + TimedData(const TimePoint &expire, Data &&data) : + expire_(expire), data_(std::move(data)) {} + bool Expired() { return Clock::now() > expire_; } + Data &data() { return data_; } + Data const &data() const { return data_; } + private: - struct Record { - TimePoint expire_; - Data data_; - Record(const TimePoint &expire, const Data &data) : - expire_(expire), data_(data) {} - Record(const TimePoint &expire, Data &&data) : - expire_(expire), data_(std::move(data)) {} - bool Expired() { return Clock::now() > expire_; } - }; + TimePoint expire_; + Data data_; +}; + +template <class Data, class ClockType = std::chrono::steady_clock> +class TimedQueue +{ + typedef TimedData<Data, ClockType> Record; + +public: + typedef typename Record::Clock Clock; + typedef typename Record::TimePoint TimePoint; + typedef typename Record::Duration Duration; + +private: typedef std::list<Record> Queue; Synced<Queue> queue_; @@ -62,7 +76,7 @@ do { if (it->Expired()) { it = q.erase(it); - } else if (func(it->data_)) { + } else if (func(it->data())) { it = q.erase(it); } else { ++it; -- Gitblit v1.8.0