Commit 7ae57a35 authored by Max Kellermann's avatar Max Kellermann

event/MultiSocketMonitor: migrate from TimeoutMonitor to TimerEvent

parent 11f36c0b
......@@ -28,7 +28,8 @@
#endif
MultiSocketMonitor::MultiSocketMonitor(EventLoop &_loop)
:IdleMonitor(_loop), TimeoutMonitor(_loop) {
:IdleMonitor(_loop),
timeout_event(_loop, BIND_THIS_METHOD(OnTimeout)) {
}
void
......@@ -38,7 +39,7 @@ MultiSocketMonitor::Reset()
fds.clear();
IdleMonitor::Cancel();
TimeoutMonitor::Cancel();
timeout_event.Cancel();
ready = refresh = false;
}
......@@ -81,9 +82,9 @@ MultiSocketMonitor::Prepare()
{
const auto timeout = PrepareSockets();
if (timeout >= timeout.zero())
TimeoutMonitor::Schedule(timeout);
timeout_event.Schedule(timeout);
else
TimeoutMonitor::Cancel();
timeout_event.Cancel();
}
......
......@@ -22,7 +22,7 @@
#include "check.h"
#include "IdleMonitor.hxx"
#include "TimeoutMonitor.hxx"
#include "TimerEvent.hxx"
#include "SocketMonitor.hxx"
#include "Compiler.h"
......@@ -51,7 +51,7 @@ class EventLoop;
* In PrepareSockets(), use UpdateSocketList() and AddSocket().
* DispatchSockets() will be called if at least one socket is ready.
*/
class MultiSocketMonitor : IdleMonitor, TimeoutMonitor
class MultiSocketMonitor : IdleMonitor
{
class SingleFD final : public SocketMonitor {
MultiSocketMonitor &multi;
......@@ -97,6 +97,8 @@ class MultiSocketMonitor : IdleMonitor, TimeoutMonitor
friend class SingleFD;
TimerEvent timeout_event;
/**
* DispatchSockets() should be called.
*/
......@@ -224,7 +226,7 @@ private:
void Prepare();
virtual void OnTimeout() final {
void OnTimeout() {
SetReady();
IdleMonitor::Schedule();
}
......
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