From 9cb06c4d565745958ed4ea4ff6fc7de6dffdd54a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 19 Nov 2017 18:49:14 +0100 Subject: [PATCH] Ref T192, DBus utility functions, Service name empty for P2P --- src/blackcore/corefacade.cpp | 2 +- src/blackmisc/dbusserver.cpp | 18 ++++++++++++++++++ src/blackmisc/dbusserver.h | 7 +++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/blackcore/corefacade.cpp b/src/blackcore/corefacade.cpp index 9d2160c2f..3338dd0ec 100644 --- a/src/blackcore/corefacade.cpp +++ b/src/blackcore/corefacade.cpp @@ -361,7 +361,7 @@ namespace BlackCore } else { - const QString name("BlackBoxRuntime"); + const QString name(CDBusServer::p2pConnectionName() + " " + address); QDBusConnection::disconnectFromPeer(name); m_dbusConnection = QDBusConnection::connectToPeer(address, name); } diff --git a/src/blackmisc/dbusserver.cpp b/src/blackmisc/dbusserver.cpp index 94d266222..1d6a4fdbf 100644 --- a/src/blackmisc/dbusserver.cpp +++ b/src/blackmisc/dbusserver.cpp @@ -93,11 +93,23 @@ namespace BlackMisc return sn; } + const QString &CDBusServer::coreServiceName(const QDBusConnection &connection) + { + static const QString empty; + return CDBusServer::isP2PConnection(connection) ? empty : CDBusServer::coreServiceName(); + } + bool CDBusServer::isP2PAddress(const QString &address) { return modeOfAddress(address) == SERVERMODE_P2P; } + bool CDBusServer::isP2PConnection(const QDBusConnection &connection) + { + if (CDBusServer::isQtDefaultConnection(connection)) { return false; } + return connection.name().contains(p2pConnectionName()); + } + bool CDBusServer::dBusAddressToHostAndPort(QString address, QString &host, int &port) { address = address.trimmed().toLower().replace(' ', ""); @@ -170,6 +182,12 @@ namespace BlackMisc return ""; } + QDBusConnection::RegisterOptions CDBusServer::registerOptions() + { + return QDBusConnection::ExportAdaptors | QDBusConnection::ExportAllSignals | QDBusConnection::ExportAllSlots; + // return QDBusConnection::ExportAllContents; + } + bool CDBusServer::registerObjectsWithP2PConnection(QDBusConnection connection) { Q_ASSERT(! m_objects.isEmpty()); diff --git a/src/blackmisc/dbusserver.h b/src/blackmisc/dbusserver.h index ff6f4b51e..2ad1cddeb 100644 --- a/src/blackmisc/dbusserver.h +++ b/src/blackmisc/dbusserver.h @@ -44,6 +44,9 @@ namespace BlackMisc //! Default service name static const QString &coreServiceName(); + //! Service name, empty if is P2P connection + static const QString &coreServiceName(const QDBusConnection &connection); + //! Server mode enum ServerMode { @@ -119,6 +122,9 @@ namespace BlackMisc //! False if address is session or system bus address static bool isP2PAddress(const QString &address); + //! False if address is session or system bus connection + static bool isP2PConnection(const QDBusConnection &connection); + //! Extract host and port from a DBus address static bool dBusAddressToHostAndPort(QString dbusAddress, QString &o_host, int &o_port); @@ -143,6 +149,7 @@ namespace BlackMisc QMap m_objects; QMap m_connections; + //! Interface name/value to class name static QString getDBusInterfaceFromClassInfo(QObject *object); //! Register options with connection