Commit 263b0ffd authored by Max Kellermann's avatar Max Kellermann

event/TimerEvent: use auto_unlink hook

parent 22bea5c9
......@@ -131,14 +131,6 @@ EventLoop::AddTimer(TimerEvent &t, std::chrono::steady_clock::duration d) noexce
again = true;
}
void
EventLoop::CancelTimer(TimerEvent &t) noexcept
{
assert(IsInside());
timers.erase(timers.iterator_to(t));
}
inline std::chrono::steady_clock::duration
EventLoop::HandleTimers() noexcept
{
......
......@@ -64,7 +64,7 @@ class EventLoop final : SocketMonitor
using TimerSet =
boost::intrusive::multiset<TimerEvent,
boost::intrusive::base_hook<boost::intrusive::set_base_hook<>>,
boost::intrusive::base_hook<boost::intrusive::set_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>>,
boost::intrusive::compare<TimerCompare>,
boost::intrusive::constant_time_size<false>>;
TimerSet timers;
......@@ -186,7 +186,6 @@ public:
void AddTimer(TimerEvent &t,
std::chrono::steady_clock::duration d) noexcept;
void CancelTimer(TimerEvent &t) noexcept;
/**
* Schedule a call to DeferEvent::RunDeferred().
......
......@@ -21,13 +21,6 @@
#include "Loop.hxx"
void
TimerEvent::Cancel() noexcept
{
if (IsActive())
loop.CancelTimer(*this);
}
void
TimerEvent::Schedule(std::chrono::steady_clock::duration d) noexcept
{
Cancel();
......
......@@ -37,7 +37,7 @@ class EventLoop;
* as thread-safe.
*/
class TimerEvent final
: public boost::intrusive::set_base_hook<>
: public boost::intrusive::set_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>
{
friend class EventLoop;
......@@ -57,10 +57,6 @@ public:
:loop(_loop), callback(_callback) {
}
~TimerEvent() noexcept {
Cancel();
}
auto &GetEventLoop() const noexcept {
return loop;
}
......@@ -70,7 +66,10 @@ public:
}
void Schedule(std::chrono::steady_clock::duration d) noexcept;
void Cancel() noexcept;
void Cancel() noexcept {
unlink();
}
private:
void Run() noexcept {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment