From 58d904a328c0d849769b483e901a0be9426b8209 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期二, 20 七月 2021 20:20:44 +0800 Subject: [PATCH] 调整Request C.BHFree的位置 --- src/timed_queue.h | 47 +++-------------------------------------------- 1 files changed, 3 insertions(+), 44 deletions(-) diff --git a/src/timed_queue.h b/src/timed_queue.h index b2a941b..51da497 100644 --- a/src/timed_queue.h +++ b/src/timed_queue.h @@ -1,7 +1,7 @@ /* * ===================================================================================== * - * Filename: failed_msg.h + * Filename: timed_queue.h * * Description: * @@ -35,55 +35,14 @@ expire_(expire), data_(data) {} TimedData(const TimePoint &expire, Data &&data) : expire_(expire), data_(std::move(data)) {} - bool Expired() { return Clock::now() > expire_; } + bool Expired() const { return Clock::now() > expire_; } + const TimePoint &expire() const { return expire_; } Data &data() { return data_; } Data const &data() const { return data_; } private: 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_; - -public: - void Push(Data &&data, const TimePoint &expire) { queue_->emplace_back(expire, std::move(data)); } - void Push(Data const &data, const TimePoint &expire) { queue_->emplace_back(expire, data); } - - void Push(Data &&data, Duration const &timeout) { Push(std::move(data), Clock::now() + timeout); } - void Push(Data const &data, Duration const &timeout) { Push(data, Clock::now() + timeout); } - - template <class Func> - void CheckAll(Func const &func) - { - queue_.Apply([&](Queue &q) { - if (q.empty()) { - return; - } - auto it = q.begin(); - do { - if (it->Expired()) { - it = q.erase(it); - } else if (func(it->data())) { - it = q.erase(it); - } else { - ++it; - } - } while (it != q.end()); - }); - } }; #endif // end of include guard: TIMED_QUEUE_Y2YLRBS3 -- Gitblit v1.8.0