summaryrefslogtreecommitdiffstats
path: root/src/uscxml/concurrency/DelayedEventQueue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/concurrency/DelayedEventQueue.cpp')
-rw-r--r--src/uscxml/concurrency/DelayedEventQueue.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/uscxml/concurrency/DelayedEventQueue.cpp b/src/uscxml/concurrency/DelayedEventQueue.cpp
index 642c4a0..ca43c8e 100644
--- a/src/uscxml/concurrency/DelayedEventQueue.cpp
+++ b/src/uscxml/concurrency/DelayedEventQueue.cpp
@@ -99,6 +99,15 @@ void DelayedEventQueue::addEvent(std::string eventId, void (*callback)(void*, co
event_add(event, &delay);
}
+void DelayedEventQueue::cancelAllEvents() {
+ tthread::lock_guard<tthread::recursive_mutex> lock(_mutex);
+ while(_callbackData.size() > 0) {
+ event_del(_callbackData[_callbackData.begin()->first].event);
+ event_free(_callbackData[_callbackData.begin()->first].event);
+ _callbackData.erase(_callbackData.begin());
+ }
+}
+
void DelayedEventQueue::cancelEvent(std::string eventId) {
tthread::lock_guard<tthread::recursive_mutex> lock(_mutex);
@@ -122,6 +131,7 @@ void DelayedEventQueue::stop() {
if (_thread) {
_thread->join();
delete _thread;
+ _thread = NULL;
}
}