summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/EventLoop')
-rw-r--r--Swiften/EventLoop/SimpleEventLoop.cpp11
-rw-r--r--Swiften/EventLoop/SimpleEventLoop.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/Swiften/EventLoop/SimpleEventLoop.cpp b/Swiften/EventLoop/SimpleEventLoop.cpp
index 2d71544..b77639c 100644
--- a/Swiften/EventLoop/SimpleEventLoop.cpp
+++ b/Swiften/EventLoop/SimpleEventLoop.cpp
@@ -44,6 +44,17 @@ void SimpleEventLoop::doRun(bool breakAfterEvents) {
}
}
+void SimpleEventLoop::runOnce() {
+ std::vector<Event> events;
+ {
+ boost::unique_lock<boost::mutex> lock(eventsMutex_);
+ events.swap(events_);
+ }
+ foreach(const Event& event, events) {
+ handleEvent(event);
+ }
+}
+
void SimpleEventLoop::stop() {
postEvent(boost::bind(&SimpleEventLoop::doStop, this));
}
diff --git a/Swiften/EventLoop/SimpleEventLoop.h b/Swiften/EventLoop/SimpleEventLoop.h
index bdffa3d..6fb3f53 100644
--- a/Swiften/EventLoop/SimpleEventLoop.h
+++ b/Swiften/EventLoop/SimpleEventLoop.h
@@ -27,6 +27,8 @@ namespace Swift {
doRun(true);
}
+ void runOnce();
+
void stop();
virtual void post(const Event& event);