From 32384047537ed7c63cf3099b247777ed6035af49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Mon, 17 Apr 2017 14:45:19 +0200 Subject: =?UTF-8?q?Avoid=20adding=20more=20that=20one=20=E2=80=9CXMPP=20re?= =?UTF-8?q?connection=E2=80=9D=20timed=20event=20at=20the=20same=20time?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix a semblance of infinite and busy loop, that could occur if biboumi’s poller is woken up multiple times while the XMPP server is not reachable. --- src/utils/timed_events_manager.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/utils/timed_events_manager.cpp') diff --git a/src/utils/timed_events_manager.cpp b/src/utils/timed_events_manager.cpp index 67d61fe..75e6338 100644 --- a/src/utils/timed_events_manager.cpp +++ b/src/utils/timed_events_manager.cpp @@ -1,5 +1,7 @@ #include +#include + TimedEventsManager& TimedEventsManager::instance() { static TimedEventsManager inst; @@ -67,7 +69,19 @@ std::size_t TimedEventsManager::cancel(const std::string& name) return res; } + + std::size_t TimedEventsManager::size() const { return this->events.size(); } + +const TimedEvent* TimedEventsManager::find_event(const std::string& name) const +{ + const auto it = std::find_if(this->events.begin(), this->events.end(), [&name](const TimedEvent& o) { + return o.get_name() == name; + }); + if (it == this->events.end()) + return nullptr; + return &*it; +} -- cgit v1.2.3