summaryrefslogtreecommitdiffstats
path: root/meta-ivi-common/recipes-automotive/automotive-message-broker/automotive-message-broker/amb_allow_sessionbus.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ivi-common/recipes-automotive/automotive-message-broker/automotive-message-broker/amb_allow_sessionbus.patch')
-rw-r--r--meta-ivi-common/recipes-automotive/automotive-message-broker/automotive-message-broker/amb_allow_sessionbus.patch124
1 files changed, 124 insertions, 0 deletions
diff --git a/meta-ivi-common/recipes-automotive/automotive-message-broker/automotive-message-broker/amb_allow_sessionbus.patch b/meta-ivi-common/recipes-automotive/automotive-message-broker/automotive-message-broker/amb_allow_sessionbus.patch
new file mode 100644
index 000000000..d9b77c8f5
--- /dev/null
+++ b/meta-ivi-common/recipes-automotive/automotive-message-broker/automotive-message-broker/amb_allow_sessionbus.patch
@@ -0,0 +1,124 @@
+diff --git a/plugins/dbus/abstractdbusinterface.cpp b/plugins/dbus/abstractdbusinterface.cpp
+index 9dd8566..19ef606 100644
+--- a/plugins/dbus/abstractdbusinterface.cpp
++++ b/plugins/dbus/abstractdbusinterface.cpp
+@@ -17,6 +17,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+ #include "abstractdbusinterface.h"
++#include "dbusplugin.h"
+
+ #include <abstractroutingengine.h>
+ #include <debugout.h>
+@@ -37,7 +38,7 @@ list<string> AbstractDBusInterface::mimplementedProperties;
+ const uint getPid(const char *owner)
+ {
+ GError* error = nullptr;
+- GDBusProxy* dbus = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, NULL,
++ GDBusProxy* dbus = g_dbus_proxy_new_for_bus_sync(bustype, G_DBUS_PROXY_FLAGS_NONE, NULL,
+ "org.freedesktop.DBus",
+ "/",
+ "org.freedesktop.DBus",
+diff --git a/plugins/dbus/automotivemanager.cpp b/plugins/dbus/automotivemanager.cpp
+index b5fb149..edbe1bd 100644
+--- a/plugins/dbus/automotivemanager.cpp
++++ b/plugins/dbus/automotivemanager.cpp
+@@ -1,3 +1,4 @@
++#include "dbusplugin.h"
+ #include "automotivemanager.h"
+ #include "abstractdbusinterface.h"
+ #include "listplusplus.h"
+@@ -341,7 +342,7 @@ static void signalCallback( GDBusConnection *connection,
+ AbstractDBusInterface* iface = i.first;
+ for(auto n : i.second)
+ {
+- if(n == name)
++ if(n == name && !persistent)
+ {
+ DebugOut()<<"unreferencing "<<n<<" from the subscription of "<<iface->objectPath()<<endl;
+ manager->subscribedProcesses[iface].remove(n);
+@@ -398,7 +399,7 @@ AutomotiveManager::AutomotiveManager(GDBusConnection *connection)
+
+ g_assert(regId > 0);
+
+- g_dbus_connection_signal_subscribe(g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL,NULL), "org.freedesktop.DBus", "org.freedesktop.DBus",
++ g_dbus_connection_signal_subscribe(g_bus_get_sync(bustype, NULL,NULL), "org.freedesktop.DBus", "org.freedesktop.DBus",
+ "NameOwnerChanged", "/org/freedesktop/DBus", NULL, G_DBUS_SIGNAL_FLAGS_NONE,
+ signalCallback, this, NULL);
+ }
+diff --git a/plugins/dbus/dbusinterfacemanager.cpp b/plugins/dbus/dbusinterfacemanager.cpp
+index 0c8a645..07e6786 100644
+--- a/plugins/dbus/dbusinterfacemanager.cpp
++++ b/plugins/dbus/dbusinterfacemanager.cpp
+@@ -236,7 +236,7 @@ on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data
+ DBusInterfaceManager::DBusInterfaceManager(AbstractRoutingEngine* engine,std::map<std::string,std::string> config)
+ :AbstractSink(engine,config),re(engine), connection(nullptr)
+ {
+- ownerId = g_bus_own_name(G_BUS_TYPE_SYSTEM,
++ ownerId = g_bus_own_name(bustype,
+ DBusServiceName,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ on_bus_acquired,
+diff --git a/plugins/dbus/dbusplugin.cpp b/plugins/dbus/dbusplugin.cpp
+index 7fa31c1..0b75d69 100644
+--- a/plugins/dbus/dbusplugin.cpp
++++ b/plugins/dbus/dbusplugin.cpp
+@@ -24,8 +24,21 @@
+ #include "debugout.h"
+ #include "listplusplus.h"
+
++bool persistent=false;
++GBusType bustype=G_BUS_TYPE_SYSTEM;
++
+ extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map<string, string> config)
+ {
++ if(config.find("sessionbus") != config.end())
++ {
++ bustype=G_BUS_TYPE_SESSION;
++ }
++
++ if(config.find("persistent") != config.end())
++ {
++ persistent=true;
++ }
++
+ return new DBusSinkManager(routingengine, config);
+ }
+
+diff --git a/plugins/dbus/dbusplugin.h b/plugins/dbus/dbusplugin.h
+index 337f2f6..92e6255 100644
+--- a/plugins/dbus/dbusplugin.h
++++ b/plugins/dbus/dbusplugin.h
+@@ -29,6 +29,9 @@
+
+ typedef std::map<VehicleProperty::Property, VariantType*> PropertyDBusMap;
+
++extern GBusType bustype;
++extern bool persistent;
++
+ class DBusSink : public AbstractSink, public AbstractDBusInterface
+ {
+
+diff --git a/tests/amb-get b/tests/amb-get
+index 0835a64..7fb48ea 100755
+--- a/tests/amb-get
++++ b/tests/amb-get
+@@ -5,12 +5,17 @@ import sys
+ import argparse
+
+ parser = argparse.ArgumentParser()
++parser.add_argument("--sessionbus", help="use session bus", action='store_true')
+ parser.add_argument("get", help="get {objectName}")
+ args = parser.parse_args()
+
+ objectName = args.get
+
+-bus = dbus.SystemBus()
++if (args.sessionbus):
++ bus = dbus.SessionBus()
++else:
++ bus = dbus.SystemBus()
++
+ managerObject = bus.get_object("org.automotive.message.broker", "/");
+ managerInterface = dbus.Interface(managerObject, "org.automotive.Manager")
+