mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
/**
|
|
*
|
|
* Timer.h
|
|
* An Tao
|
|
*
|
|
* Public header file in trantor lib.
|
|
*
|
|
* Copyright 2018, An Tao. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the License file.
|
|
*
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <trantor/utils/NonCopyable.h>
|
|
#include <trantor/net/callbacks.h>
|
|
#include <functional>
|
|
#include <atomic>
|
|
#include <iostream>
|
|
#include <chrono>
|
|
|
|
namespace trantor
|
|
{
|
|
using TimerId = uint64_t;
|
|
using TimePoint = std::chrono::steady_clock::time_point;
|
|
using TimeInterval = std::chrono::microseconds;
|
|
class Timer : public NonCopyable
|
|
{
|
|
public:
|
|
Timer(const TimerCallback &cb,
|
|
const TimePoint &when,
|
|
const TimeInterval &interval);
|
|
Timer(TimerCallback &&cb,
|
|
const TimePoint &when,
|
|
const TimeInterval &interval);
|
|
~Timer()
|
|
{
|
|
// std::cout<<"Timer unconstract!"<<std::endl;
|
|
}
|
|
void run() const;
|
|
void restart(const TimePoint &now);
|
|
bool operator<(const Timer &t) const;
|
|
bool operator>(const Timer &t) const;
|
|
const TimePoint &when() const
|
|
{
|
|
return when_;
|
|
}
|
|
bool isRepeat()
|
|
{
|
|
return repeat_;
|
|
}
|
|
TimerId id()
|
|
{
|
|
return id_;
|
|
}
|
|
|
|
private:
|
|
TimerCallback callback_;
|
|
TimePoint when_;
|
|
const TimeInterval interval_;
|
|
const bool repeat_;
|
|
const TimerId id_;
|
|
static std::atomic<TimerId> timersCreated_;
|
|
};
|
|
|
|
} // namespace trantor
|