Commit f685a480 authored by Max Kellermann's avatar Max Kellermann

event/Loop: move code to HandleDeferred()

parent 7c15e41d
...@@ -217,15 +217,9 @@ EventLoop::RemoveDeferred(DeferredMonitor &d) ...@@ -217,15 +217,9 @@ EventLoop::RemoveDeferred(DeferredMonitor &d)
deferred.erase(i); deferred.erase(i);
} }
bool void
EventLoop::OnSocketReady(gcc_unused unsigned flags) EventLoop::HandleDeferred()
{ {
assert(!quit);
wake_fd.Read();
mutex.lock();
while (!deferred.empty() && !quit) { while (!deferred.empty() && !quit) {
DeferredMonitor &m = *deferred.front(); DeferredMonitor &m = *deferred.front();
assert(m.pending); assert(m.pending);
...@@ -237,7 +231,17 @@ EventLoop::OnSocketReady(gcc_unused unsigned flags) ...@@ -237,7 +231,17 @@ EventLoop::OnSocketReady(gcc_unused unsigned flags)
m.RunDeferred(); m.RunDeferred();
mutex.lock(); mutex.lock();
} }
}
bool
EventLoop::OnSocketReady(gcc_unused unsigned flags)
{
assert(!quit);
wake_fd.Read();
mutex.lock();
HandleDeferred();
mutex.unlock(); mutex.unlock();
return true; return true;
......
...@@ -157,6 +157,13 @@ public: ...@@ -157,6 +157,13 @@ public:
void Run(); void Run();
private: private:
/**
* Invoke all pending DeferredMonitors.
*
* Caller must lock the mutex.
*/
void HandleDeferred();
virtual bool OnSocketReady(unsigned flags) override; virtual bool OnSocketReady(unsigned flags) override;
public: public:
......
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