create 'frequency' option for dbus plugin
authorKevron Rees <kevron.m.rees@intel.com>
Fri, 13 Dec 2013 23:41:43 +0000 (15:41 -0800)
committerKevron Rees <kevron.m.rees@intel.com>
Fri, 13 Dec 2013 23:41:43 +0000 (15:41 -0800)
examples/dbusconfig
plugins/dbus/abstractdbusinterface.cpp
plugins/dbus/abstractdbusinterface.h
plugins/dbus/dbusplugin.cpp
plugins/dbus/dbussignaller.hpp

index 24254b7..ca252a2 100644 (file)
@@ -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"
                }
 
        ]
index b500380..6243625 100644 (file)
@@ -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);
+}
+
index ffbfb70..2050e6a 100644 (file)
@@ -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;
 
 };
 
index be29120..14670cc 100644 (file)
@@ -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)
index 2f6fcc4..a7907d2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef _DBUSSIGNALLER_H_
-#define _DBUSSINGALLER_H_
+#define _DBUSSIGNALLER_H_
 
 #include <gio/gio.h>
 #include <map>