event/TimerEvent: use base_hook instead of member_hook

This commit is contained in:
Max Kellermann 2020-10-08 16:57:32 +02:00
parent 4cd0f661d6
commit cd9ff9d9b0
2 changed files with 5 additions and 8 deletions

View File

@ -66,9 +66,7 @@ class EventLoop final : SocketMonitor
using TimerSet =
boost::intrusive::multiset<TimerEvent,
boost::intrusive::member_hook<TimerEvent,
TimerEvent::TimerSetHook,
&TimerEvent::timer_set_hook>,
boost::intrusive::base_hook<boost::intrusive::set_base_hook<>>,
boost::intrusive::compare<TimerCompare>,
boost::intrusive::constant_time_size<false>>;
TimerSet timers;

View File

@ -36,12 +36,11 @@ class EventLoop;
* thread that runs the #EventLoop, except where explicitly documented
* as thread-safe.
*/
class TimerEvent final {
class TimerEvent final
: public boost::intrusive::set_base_hook<>
{
friend class EventLoop;
typedef boost::intrusive::set_member_hook<> TimerSetHook;
TimerSetHook timer_set_hook;
EventLoop &loop;
typedef BoundMethod<void() noexcept> Callback;
@ -67,7 +66,7 @@ public:
}
bool IsActive() const noexcept {
return timer_set_hook.is_linked();
return is_linked();
}
void Schedule(std::chrono::steady_clock::duration d) noexcept;