event/Loop: move TimerRecord::due to class TimeoutMonitor
Prepare to eliminate the TimerRecord struct.
This commit is contained in:
parent
d4266d0063
commit
71ed3ff992
@ -27,6 +27,18 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
inline std::chrono::steady_clock::time_point
|
||||
EventLoop::TimerRecord::GetDue() const noexcept
|
||||
{
|
||||
return timer.due;
|
||||
}
|
||||
|
||||
inline bool
|
||||
EventLoop::TimerRecord::operator<(const TimerRecord &other) const noexcept
|
||||
{
|
||||
return timer.due < other.timer.due;
|
||||
}
|
||||
|
||||
EventLoop::EventLoop(ThreadId _thread)
|
||||
:SocketMonitor(*this), thread(_thread)
|
||||
{
|
||||
@ -93,7 +105,8 @@ EventLoop::AddTimer(TimeoutMonitor &t, std::chrono::steady_clock::duration d)
|
||||
{
|
||||
assert(IsInside());
|
||||
|
||||
timers.insert(TimerRecord(t, now + d));
|
||||
t.due = now + d;
|
||||
timers.insert(TimerRecord(t));
|
||||
again = true;
|
||||
}
|
||||
|
||||
@ -150,7 +163,7 @@ EventLoop::Run()
|
||||
break;
|
||||
}
|
||||
|
||||
timeout = i->due - now;
|
||||
timeout = i->GetDue() - now;
|
||||
if (timeout > timeout.zero())
|
||||
break;
|
||||
|
||||
|
@ -51,21 +51,16 @@ class DeferredMonitor;
|
||||
class EventLoop final : SocketMonitor
|
||||
{
|
||||
struct TimerRecord {
|
||||
/**
|
||||
* Projected monotonic_clock_ms() value when this
|
||||
* timer is due.
|
||||
*/
|
||||
const std::chrono::steady_clock::time_point due;
|
||||
|
||||
TimeoutMonitor &timer;
|
||||
|
||||
constexpr TimerRecord(TimeoutMonitor &_timer,
|
||||
std::chrono::steady_clock::time_point _due)
|
||||
:due(_due), timer(_timer) {}
|
||||
explicit constexpr TimerRecord(TimeoutMonitor &_timer)
|
||||
:timer(_timer) {}
|
||||
|
||||
bool operator<(const TimerRecord &other) const {
|
||||
return due < other.due;
|
||||
}
|
||||
gcc_pure
|
||||
std::chrono::steady_clock::time_point GetDue() const noexcept;
|
||||
|
||||
gcc_pure
|
||||
bool operator<(const TimerRecord &other) const noexcept;
|
||||
};
|
||||
|
||||
WakeFD wake_fd;
|
||||
|
@ -39,6 +39,12 @@ class TimeoutMonitor {
|
||||
|
||||
EventLoop &loop;
|
||||
|
||||
/**
|
||||
* When is this timer due? This is only valid if #active is
|
||||
* true.
|
||||
*/
|
||||
std::chrono::steady_clock::time_point due;
|
||||
|
||||
bool active;
|
||||
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user