diff options
Diffstat (limited to 'src/dbus/qdbusconnection_p.h')
-rw-r--r-- | src/dbus/qdbusconnection_p.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index 444d4727fd..da67a6c5d4 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -94,7 +94,7 @@ class QDBusServer; class QDBusErrorInternal { mutable DBusError error; - Q_DISABLE_COPY(QDBusErrorInternal) + Q_DISABLE_COPY_MOVE(QDBusErrorInternal) public: inline QDBusErrorInternal() { q_dbus_error_init(&error); } inline ~QDBusErrorInternal() { q_dbus_error_free(&error); } @@ -115,20 +115,29 @@ public: struct Watcher { - Watcher(): watch(0), read(0), write(0) {} + Watcher(): watch(nullptr), read(nullptr), write(nullptr) {} DBusWatch *watch; QSocketNotifier *read; QSocketNotifier *write; }; + struct ArgMatchRules { + QStringList args; + QString arg0namespace; + bool operator==(const ArgMatchRules &other) const { + return args == other.args && + arg0namespace == other.arg0namespace; + } + }; + struct SignalHook { - inline SignalHook() : obj(0), midx(-1) { } + inline SignalHook() : obj(nullptr), midx(-1) { } QString service, path, signature; QObject* obj; int midx; QVector<int> params; - QStringList argumentMatch; + ArgMatchRules argumentMatch; QByteArray matchRule; }; @@ -141,9 +150,9 @@ public: { typedef QVector<ObjectTreeNode> DataList; - inline ObjectTreeNode() : obj(0), flags(0) { } + inline ObjectTreeNode() : obj(nullptr), flags(0) { } inline ObjectTreeNode(const QString &n) // intentionally implicit - : name(n), obj(0), flags(0) { } + : name(n), obj(nullptr), flags(0) { } inline bool operator<(const QString &other) const { return name < other; } inline bool operator<(const QStringRef &other) const @@ -185,7 +194,7 @@ public: public: // public methods are entry points from other objects - explicit QDBusConnectionPrivate(QObject *parent = 0); + explicit QDBusConnectionPrivate(QObject *parent = nullptr); ~QDBusConnectionPrivate(); void createBusService(); @@ -207,12 +216,19 @@ public: QDBusMessage sendWithReplyLocal(const QDBusMessage &message); QDBusPendingCallPrivate *sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod,int timeout = -1); + bool connectSignal(const QString &service, const QString &path, const QString& interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot); bool disconnectSignal(const QString &service, const QString &path, const QString& interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot); + bool connectSignal(const QString &service, const QString &path, const QString& interface, + const QString &name, const ArgMatchRules &argumentMatch, const QString &signature, + QObject *receiver, const char *slot); + bool disconnectSignal(const QString &service, const QString &path, const QString& interface, + const QString &name, const ArgMatchRules &argumentMatch, const QString &signature, + QObject *receiver, const char *slot); void registerObject(const ObjectTreeNode *node); void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode); void connectRelay(const QString &service, @@ -332,7 +348,7 @@ public: static bool prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, const QString &service, const QString &path, const QString &interface, const QString &name, - const QStringList &argMatch, + const ArgMatchRules &argMatch, QObject *receiver, const char *signal, int minMIdx, bool buildSignature); static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *); |