Commit b611b182 authored by Max Kellermann's avatar Max Kellermann

event/Loop: move code to Wait()

parent 1473d847
......@@ -184,6 +184,22 @@ ExportTimeoutMS(Event::Duration timeout)
: -1;
}
inline bool
EventLoop::Wait(Event::Duration timeout) noexcept
{
const auto poll_result =
poll_group.ReadEvents(ExportTimeoutMS(timeout));
ready_sockets.clear();
for (size_t i = 0; i < poll_result.GetSize(); ++i) {
auto &s = *(SocketEvent *)poll_result.GetObject(i);
s.SetReadyFlags(poll_result.GetEvents(i));
ready_sockets.push_back(s);
}
return poll_result.GetSize() > 0;
}
void
EventLoop::Run() noexcept
{
......@@ -257,15 +273,7 @@ EventLoop::Run() noexcept
/* wait for new event */
const auto poll_result =
poll_group.ReadEvents(ExportTimeoutMS(timeout));
ready_sockets.clear();
for (size_t i = 0; i < poll_result.GetSize(); ++i) {
auto &s = *(SocketEvent *)poll_result.GetObject(i);
s.SetReadyFlags(poll_result.GetEvents(i));
ready_sockets.push_back(s);
}
Wait(timeout);
now = std::chrono::steady_clock::now();
......
......@@ -258,6 +258,14 @@ private:
*/
Event::Duration HandleTimers() noexcept;
/**
* Call epoll_wait() and pass all returned events to
* SocketEvent::SetReadyFlags().
*
* @return true if one or more sockets have become ready
*/
bool Wait(Event::Duration timeout) noexcept;
#ifdef HAVE_THREADED_EVENT_LOOP
void OnSocketReady(unsigned flags) noexcept;
#endif
......
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