/*
|
* =====================================================================================
|
*
|
* Filename: timed_queue.h
|
*
|
* Description:
|
*
|
* Version: 1.0
|
* Created: 2021年04月12日 09时36分04秒
|
* Revision: none
|
* Compiler: gcc
|
*
|
* Author: Li Chao (), lichao@aiotlink.com
|
* Organization:
|
*
|
* =====================================================================================
|
*/
|
#ifndef TIMED_QUEUE_Y2YLRBS3
|
#define TIMED_QUEUE_Y2YLRBS3
|
|
#include "bh_util.h"
|
#include <chrono>
|
#include <list>
|
#include <string>
|
|
template <class Data, class ClockType = std::chrono::steady_clock>
|
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() 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_;
|
};
|
|
#endif // end of include guard: TIMED_QUEUE_Y2YLRBS3
|