summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevron Rees <kevron.m.rees@intel.com>2013-12-13 15:41:43 -0800
committerKevron Rees <kevron.m.rees@intel.com>2013-12-13 15:41:43 -0800
commitd5935f3af36f79d2cd327b81dee4614d11216fbe (patch)
treec1b769cc180eb0f429924c85e6e1fe4aac269654
parent797ff4f161693a4c3663bba5d275e747726df000 (diff)
downloadautomotive-message-broker-d5935f3af36f79d2cd327b81dee4614d11216fbe.tar.gz
create 'frequency' option for dbus plugin
-rw-r--r--examples/dbusconfig3
-rw-r--r--plugins/dbus/abstractdbusinterface.cpp13
-rw-r--r--plugins/dbus/abstractdbusinterface.h4
-rw-r--r--plugins/dbus/dbusplugin.cpp12
-rw-r--r--plugins/dbus/dbussignaller.hpp2
5 files changed, 27 insertions, 7 deletions
diff --git a/examples/dbusconfig b/examples/dbusconfig
index 24254b79..ca252a21 100644
--- a/examples/dbusconfig
+++ b/examples/dbusconfig
@@ -9,7 +9,8 @@
"sinks": [
{
"name" : "DBusSink",
- "path" : "/usr/lib/automotive-message-broker/dbussinkplugin.so"
+ "path" : "/usr/lib/automotive-message-broker/dbussinkplugin.so",
+ "frequency" : "1060"
}
]
diff --git a/plugins/dbus/abstractdbusinterface.cpp b/plugins/dbus/abstractdbusinterface.cpp
index b5003804..62436250 100644
--- a/plugins/dbus/abstractdbusinterface.cpp
+++ b/plugins/dbus/abstractdbusinterface.cpp
@@ -192,11 +192,6 @@ AbstractDBusInterface::AbstractDBusInterface(string interfaceName, string object
GDBusConnection* connection)
: mInterfaceName(interfaceName), mConnection(connection), mPropertyName(objectName), supported(false), zoneFilter(Zone::None), mTime(0), regId(0)
{
- if(!signaller)
- {
- signaller = DBusSignaller::factory(50);
- }
-
startRegistration();
mObjectPath = "/" + objectName;
@@ -493,3 +488,11 @@ GVariant *AbstractDBusInterface::getProperty(string propertyName)
throw -1;
}
+void AbstractDBusInterface::setTimeout(int timeout)
+{
+ if(signaller)
+ delete signaller;
+
+ signaller = DBusSignaller::factory(timeout);
+}
+
diff --git a/plugins/dbus/abstractdbusinterface.h b/plugins/dbus/abstractdbusinterface.h
index ffbfb704..2050e6a8 100644
--- a/plugins/dbus/abstractdbusinterface.h
+++ b/plugins/dbus/abstractdbusinterface.h
@@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include <nullptr.h>
#include "abstractpropertytype.h"
#include <abstractroutingengine.h>
+#include "dbussignaller.hpp"
class AbstractProperty;
@@ -105,6 +106,8 @@ protected:
virtual void setProperty(std::string propertyName, GVariant * value);
virtual GVariant * getProperty(std::string propertyName);
+
+ void setTimeout(int timeout);
std::unordered_map<std::string, AbstractProperty*> properties;
@@ -123,6 +126,7 @@ private:
static std::unordered_map<std::string, AbstractDBusInterface*> objectMap;
static std::list<std::string> mimplementedProperties;
guint regId;
+ int mTimeout;
};
diff --git a/plugins/dbus/dbusplugin.cpp b/plugins/dbus/dbusplugin.cpp
index be29120a..14670cc8 100644
--- a/plugins/dbus/dbusplugin.cpp
+++ b/plugins/dbus/dbusplugin.cpp
@@ -16,6 +16,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <boost/lexical_cast.hpp>
#include "dbusplugin.h"
#include "abstractroutingengine.h"
@@ -33,6 +34,17 @@ DBusSink::DBusSink(string propertyName, AbstractRoutingEngine* engine, GDBusConn
AbstractSink(engine, config)
{
AbstractDBusInterface::re = engine;
+
+ int timeout = 50;
+
+ if(config.find("frequency") != config.end())
+ {
+ int t = boost::lexical_cast<int>(config["frequency"]);
+
+ timeout = 1000 / t;
+ }
+
+ setTimeout(timeout);
}
void DBusSink::supportedChanged(PropertyList supportedProperties)
diff --git a/plugins/dbus/dbussignaller.hpp b/plugins/dbus/dbussignaller.hpp
index 2f6fcc49..a7907d29 100644
--- a/plugins/dbus/dbussignaller.hpp
+++ b/plugins/dbus/dbussignaller.hpp
@@ -1,5 +1,5 @@
#ifndef _DBUSSIGNALLER_H_
-#define _DBUSSINGALLER_H_
+#define _DBUSSIGNALLER_H_
#include <gio/gio.h>
#include <map>