diff options
author | Stefan Radomski <github@mintwerk.de> | 2017-01-13 16:47:44 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2017-01-13 16:47:44 (GMT) |
commit | 4f6cbe9e7aec2b4a6c8f286f9097abfb011a6235 (patch) | |
tree | 8c023473bb342780ddf51a893d18369f1319bb5c /src/uscxml/interpreter/BasicEventQueue.cpp | |
parent | 0aa0fe08dc308c94379c47d0bf9745e341cb4c81 (diff) | |
download | uscxml-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.cpp | 19 |
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()); } |