From 732bdc800d33e9d5fc78af4463da844309e7a312 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 18 Dec 2019 17:46:33 +0100 Subject: event/SocketMonitor: Schedule() returns bool --- src/event/SocketMonitor.cxx | 16 ++++++++++------ src/event/SocketMonitor.hxx | 14 +++++++++----- 2 files changed, 19 insertions(+), 11 deletions(-) (limited to 'src/event') diff --git a/src/event/SocketMonitor.cxx b/src/event/SocketMonitor.cxx index 64cc42820..f335c8fdc 100644 --- a/src/event/SocketMonitor.cxx +++ b/src/event/SocketMonitor.cxx @@ -68,20 +68,24 @@ SocketMonitor::Close() noexcept Steal().Close(); } -void +bool SocketMonitor::Schedule(unsigned flags) noexcept { assert(IsDefined()); if (flags == GetScheduledFlags()) - return; + return true; + bool success; if (scheduled_flags == 0) - loop.AddFD(fd.Get(), flags, *this); + success = loop.AddFD(fd.Get(), flags, *this); else if (flags == 0) - loop.RemoveFD(fd.Get(), *this); + success = loop.RemoveFD(fd.Get(), *this); else - loop.ModifyFD(fd.Get(), flags, *this); + success = loop.ModifyFD(fd.Get(), flags, *this); + + if (success) + scheduled_flags = flags; - scheduled_flags = flags; + return success; } diff --git a/src/event/SocketMonitor.hxx b/src/event/SocketMonitor.hxx index df80ced04..1d8814cc5 100644 --- a/src/event/SocketMonitor.hxx +++ b/src/event/SocketMonitor.hxx @@ -98,18 +98,22 @@ public: return scheduled_flags; } - void Schedule(unsigned flags) noexcept; + /** + * @return true on success, false on error (with errno set if + * USE_EPOLL is defined) + */ + bool Schedule(unsigned flags) noexcept; void Cancel() noexcept { Schedule(0); } - void ScheduleRead() noexcept { - Schedule(GetScheduledFlags() | READ | HANGUP | ERROR); + bool ScheduleRead() noexcept { + return Schedule(GetScheduledFlags() | READ | HANGUP | ERROR); } - void ScheduleWrite() noexcept { - Schedule(GetScheduledFlags() | WRITE); + bool ScheduleWrite() noexcept { + return Schedule(GetScheduledFlags() | WRITE); } void CancelRead() noexcept { -- cgit v1.2.3