summaryrefslogtreecommitdiffstats
path: root/src/uscxml/interpreter/BasicEventQueue.cpp
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2017-01-13 16:47:44 (GMT)
committerStefan Radomski <github@mintwerk.de>2017-01-13 16:47:44 (GMT)
commit4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235 (patch)
tree8c023473bb342780ddf51a893d18369f1319bb5c /src/uscxml/interpreter/BasicEventQueue.cpp
parent0aa0fe08dc308c94379c47d0bf9745e341cb4c81 (diff)
downloaduscxml-4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235.zip
uscxml-4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235.tar.gz
uscxml-4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235.tar.bz2
First support for serialization and some bug fixes for DOM per data.src
Diffstat (limited to 'src/uscxml/interpreter/BasicEventQueue.cpp')
-rw-r--r--src/uscxml/interpreter/BasicEventQueue.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/uscxml/interpreter/BasicEventQueue.cpp b/src/uscxml/interpreter/BasicEventQueue.cpp
index 519754e..bb7c78b 100644
--- a/src/uscxml/interpreter/BasicEventQueue.cpp
+++ b/src/uscxml/interpreter/BasicEventQueue.cpp
@@ -73,6 +73,25 @@ void BasicEventQueue::reset() {
_queue.clear();
}
+Data BasicEventQueue::serialize() {
+ std::lock_guard<std::recursive_mutex> lock(_mutex);
+ Data serialized;
+
+ for (auto event : _queue) {
+ serialized["BasicEventQueue"].array.push_back(event);
+ }
+ return serialized;
+}
+
+void BasicEventQueue::deserialize(const Data& data) {
+ if (data.hasKey("BasicEventQueue")) {
+ std::lock_guard<std::recursive_mutex> lock(_mutex);
+ for (auto event : data["BasicEventQueue"].array) {
+ _queue.push_back(Event::fromData(event));
+ }
+ }
+}
+
std::shared_ptr<EventQueueImpl> BasicEventQueue::create() {
return std::shared_ptr<EventQueueImpl>(new BasicEventQueue());
}