event/DeferEvent: use class IntrusiveList instead of boost::intrusive::list

This commit is contained in:
Max Kellermann
2020-12-01 16:56:58 +01:00
parent 774b4313f2
commit 990f2dc1cf
4 changed files with 25 additions and 49 deletions

View File

@@ -198,29 +198,17 @@ EventLoop::HandleTimers() noexcept
void
EventLoop::AddDeferred(DeferEvent &d) noexcept
{
if (d.IsPending())
return;
deferred.push_back(d);
defer.push_back(d);
again = true;
}
void
EventLoop::RemoveDeferred(DeferEvent &d) noexcept
{
if (d.IsPending())
deferred.erase(deferred.iterator_to(d));
}
void
EventLoop::RunDeferred() noexcept
{
while (!deferred.empty() && !quit) {
auto &m = deferred.front();
assert(m.IsPending());
deferred.pop_front();
m.RunDeferred();
while (!defer.empty() && !quit) {
defer.pop_front_and_dispose([](DeferEvent *e){
e->Run();
});
}
}