summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevron Rees <kevron.m.rees@intel.com>2015-01-06 11:12:06 -0800
committerKevron Rees <kevron.m.rees@intel.com>2015-01-06 11:12:06 -0800
commit20325d2b0380049e566f2fcf4591ad502c00adb2 (patch)
tree9da572e30f7a078e47dd7dc94d613c264cee1505
parentdf1ceb822846a6cd74bdb358bc6dbf042aed127f (diff)
downloadautomotive-message-broker-20325d2b0380049e566f2fcf4591ad502c00adb2.tar.gz
[Core][Database] - Changed queue container to vector to fix strange database plugin errors
-rw-r--r--lib/asyncqueue.hpp17
-rw-r--r--plugins/bluemonkey/bluemonkey.in.idl2
-rw-r--r--plugins/bluemonkey/config.js12
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);