diff options
author | Kevron Rees <kevron.m.rees@intel.com> | 2015-01-06 11:12:06 -0800 |
---|---|---|
committer | Kevron Rees <kevron.m.rees@intel.com> | 2015-01-06 11:12:06 -0800 |
commit | 20325d2b0380049e566f2fcf4591ad502c00adb2 (patch) | |
tree | 9da572e30f7a078e47dd7dc94d613c264cee1505 | |
parent | df1ceb822846a6cd74bdb358bc6dbf042aed127f (diff) | |
download | automotive-message-broker-20325d2b0380049e566f2fcf4591ad502c00adb2.tar.gz |
[Core][Database] - Changed queue container to vector to fix strange database plugin errors
-rw-r--r-- | lib/asyncqueue.hpp | 17 | ||||
-rw-r--r-- | plugins/bluemonkey/bluemonkey.in.idl | 2 | ||||
-rw-r--r-- | plugins/bluemonkey/config.js | 12 |
3 files changed, 17 insertions, 14 deletions
diff --git a/lib/asyncqueue.hpp b/lib/asyncqueue.hpp index 6557958b..ada42ac7 100644 --- a/lib/asyncqueue.hpp +++ b/lib/asyncqueue.hpp @@ -24,6 +24,7 @@ #include <mutex> #include <condition_variable> #include <unordered_set> +#include <vector> namespace amb { @@ -32,8 +33,8 @@ template <typename T, class Pred = std::equal_to<T> > class Queue { public: - Queue(bool blocking = false) - :mBlocking(blocking) + Queue(bool unique = false, bool blocking = false) + :mUnique(unique), mBlocking(blocking) { } @@ -78,7 +79,12 @@ public: { { std::lock_guard<std::mutex> lock(mutex); - mQueue.insert(item); + + if(contains(mQueue, item)) + { + mQueue.erase(std::find(mQueue.begin(), mQueue.end(), item)); + } + mQueue.push_back(item); } if(mBlocking) @@ -93,11 +99,12 @@ public: removeOne(&mQueue, item); } -protected: +private: bool mBlocking; + bool mUnique; std::mutex mutex; std::condition_variable cond; - std::unordered_set<T, std::hash<T>, Pred> mQueue; + std::vector<T> mQueue; }; template <typename T, class Pred = std::equal_to<T> > diff --git a/plugins/bluemonkey/bluemonkey.in.idl b/plugins/bluemonkey/bluemonkey.in.idl index b729492d..139de788 100644 --- a/plugins/bluemonkey/bluemonkey.in.idl +++ b/plugins/bluemonkey/bluemonkey.in.idl @@ -112,7 +112,7 @@ interface Bluemonkey { void createCustomProperty(DOMString name, any value, optional unsigned short zone); /*! - * \brief exportInterface + * \brief exportInterface export a custom DBus interface as org.automotive.[interfaceName] with properties */ void exportInterface(DOMString interfaceName, ExportMap[] properties); diff --git a/plugins/bluemonkey/config.js b/plugins/bluemonkey/config.js index e69e6765..cb7549e2 100644 --- a/plugins/bluemonkey/config.js +++ b/plugins/bluemonkey/config.js @@ -20,17 +20,13 @@ bluemonkey.createCustomProperty("AnswerToTheUniverse", 42); dbusConnected = bluemonkey.subscribeTo("DBusConnected"); dbusConnected.changed.connect(function () { - bluemonkey.log("WEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!" + dbusConnected.value); + if(dbusConnected.value !== true) + return; - if(dbusConnected.value !== true) - return; - - bluemonkey.exportInterface("Bluemonkey",[{'BluemonkeySuperProperty' : 'SuperProperty'}, - {'AnswerToTheUniverse' : 'AnswerToTheUniverse'}]); + bluemonkey.exportInterface("Bluemonkey",[{'BluemonkeySuperProperty' : 'SuperProperty'}, + {'AnswerToTheUniverse' : 'AnswerToTheUniverse'}]); }); - - bluemonkey.createCustomProperty("VehicleSpeed", 10); bluemonkey.createCustomProperty("EngineSpeed", 5000); bluemonkey.createCustomProperty("PowertrainTorque", 324); |