Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdbusconnection.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// Copyright (C) 2016 Intel Corporation.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4// Qt-Security score:significant reason:default
5
6#ifndef QDBUSCONNECTION_H
7#define QDBUSCONNECTION_H
8
9#include <QtDBus/qtdbusglobal.h>
10#include <QtCore/qobjectdefs.h>
11#include <QtCore/qstring.h>
12
13#ifndef QT_NO_DBUS
14
15#ifdef interface
16# undef interface
17#endif
18
20
21
22namespace QDBus
23{
30}
31
33class QDBusInterface;
34class QDBusError;
35class QDBusMessage;
36class QDBusPendingCall;
37class QDBusConnectionInterface;
38class QDBusVirtualObject;
39class QObject;
40
41class QDBusConnectionPrivate;
42class Q_DBUS_EXPORT QDBusConnection
43{
44 Q_GADGET
45 Q_MOC_INCLUDE(<QtDBus/qdbuspendingcall.h>)
46
47public:
48 enum BusType { SessionBus, SystemBus, ActivationBus };
49 Q_ENUM(BusType)
50 enum RegisterOption {
51 ExportAdaptors = 0x01,
52
53 ExportScriptableSlots = 0x10,
54 ExportScriptableSignals = 0x20,
55 ExportScriptableProperties = 0x40,
56 ExportScriptableInvokables = 0x80,
57 ExportScriptableContents = 0xf0,
58
59 ExportNonScriptableSlots = 0x100,
60 ExportNonScriptableSignals = 0x200,
61 ExportNonScriptableProperties = 0x400,
62 ExportNonScriptableInvokables = 0x800,
63 ExportNonScriptableContents = 0xf00,
64
65 ExportAllSlots = ExportScriptableSlots|ExportNonScriptableSlots,
66 ExportAllSignals = ExportScriptableSignals|ExportNonScriptableSignals,
67 ExportAllProperties = ExportScriptableProperties|ExportNonScriptableProperties,
68 ExportAllInvokables = ExportScriptableInvokables|ExportNonScriptableInvokables,
69 ExportAllContents = ExportScriptableContents|ExportNonScriptableContents,
70
71#ifndef Q_QDOC
72 // Qt 4.2 had a misspelling here
73 ExportAllSignal = ExportAllSignals,
74#endif
75 ExportChildObjects = 0x1000
76 // Reserved = 0xff000000
77 };
78 Q_DECLARE_FLAGS(RegisterOptions, RegisterOption)
79 Q_FLAG(RegisterOptions)
80
81 enum UnregisterMode {
82 UnregisterNode,
83 UnregisterTree
84 };
85 Q_ENUM(UnregisterMode)
86
87 enum VirtualObjectRegisterOption {
88 SingleNode = 0x0,
89 SubPath = 0x1
90 // Reserved = 0xff000000
91 };
92 Q_DECLARE_FLAGS(VirtualObjectRegisterOptions, VirtualObjectRegisterOption)
93
94 enum ConnectionCapability {
95 UnixFileDescriptorPassing = 0x0001
96 };
97 Q_DECLARE_FLAGS(ConnectionCapabilities, ConnectionCapability)
98
99 explicit QDBusConnection(const QString &name);
100 QDBusConnection(const QDBusConnection &other);
101 QDBusConnection(QDBusConnection &&other) noexcept : d(other.d) { other.d = nullptr; }
102 QDBusConnection &operator=(QDBusConnection &&other) noexcept { swap(other); return *this; }
103 QDBusConnection &operator=(const QDBusConnection &other);
104 ~QDBusConnection();
105
106 void swap(QDBusConnection &other) noexcept { qt_ptr_swap(d, other.d); }
107
108 bool isConnected() const;
109 QString baseService() const;
110 QDBusError lastError() const;
111 QString name() const;
112 ConnectionCapabilities connectionCapabilities() const;
113
114 bool send(const QDBusMessage &message) const;
115 bool callWithCallback(const QDBusMessage &message, QObject *receiver,
116 const char *returnMethod, const char *errorMethod,
117 int timeout = -1) const;
118 bool callWithCallback(const QDBusMessage &message, QObject *receiver,
119 const char *slot, int timeout = -1) const;
120 QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block,
121 int timeout = -1) const;
122 QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const;
123
124 bool connect(const QString &service, const QString &path, const QString &interface,
125 const QString &name, QObject *receiver, const char *slot);
126 bool connect(const QString &service, const QString &path, const QString &interface,
127 const QString &name, const QString& signature,
128 QObject *receiver, const char *slot);
129 bool connect(const QString &service, const QString &path, const QString &interface,
130 const QString &name, const QStringList &argumentMatch, const QString& signature,
131 QObject *receiver, const char *slot);
132
133 bool disconnect(const QString &service, const QString &path, const QString &interface,
134 const QString &name, QObject *receiver, const char *slot);
135 bool disconnect(const QString &service, const QString &path, const QString &interface,
136 const QString &name, const QString& signature,
137 QObject *receiver, const char *slot);
138 bool disconnect(const QString &service, const QString &path, const QString &interface,
139 const QString &name, const QStringList &argumentMatch, const QString& signature,
140 QObject *receiver, const char *slot);
141
142 bool registerObject(const QString &path, QObject *object,
143 RegisterOptions options = ExportAdaptors);
144 bool registerObject(const QString &path, const QString &interface, QObject *object,
145 RegisterOptions options = ExportAdaptors);
146 void unregisterObject(const QString &path, UnregisterMode mode = UnregisterNode);
147 QObject *objectRegisteredAt(const QString &path) const;
148
149 bool registerVirtualObject(const QString &path, QDBusVirtualObject *object,
150 VirtualObjectRegisterOption options = SingleNode);
151
152 bool registerService(const QString &serviceName);
153 bool unregisterService(const QString &serviceName);
154
155 QDBusConnectionInterface *interface() const;
156
157 void *internalPointer() const;
158
159 static QDBusConnection connectToBus(BusType type, const QString &name);
160 static QDBusConnection connectToBus(const QString &address, const QString &name);
161 static QDBusConnection connectToPeer(const QString &address, const QString &name);
162 static void disconnectFromBus(const QString &name);
163 static void disconnectFromPeer(const QString &name);
164
165 static QByteArray localMachineId();
166
167 static QDBusConnection sessionBus();
168 static QDBusConnection systemBus();
169
170protected:
171 explicit QDBusConnection(QDBusConnectionPrivate *dd);
172
173private:
174 friend class QDBusConnectionPrivate;
175 QDBusConnectionPrivate *d;
176};
178
179Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::RegisterOptions)
180Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::VirtualObjectRegisterOptions)
181Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::ConnectionCapabilities)
182
183QT_END_NAMESPACE
184
185#endif // QT_NO_DBUS
186#endif
static void saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, const QString &xml)
static QString retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor)
void relay(QObject *sender, int id, void **)
void addAdaptor(QDBusAbstractAdaptor *adaptor)
void disconnectAllSignals(QObject *object)
QList< AdaptorData > AdaptorMap
QDBusAdaptorConnector(QObject *parent)
void connectAllSignals(QObject *object)
\inmodule QtDBus
CallMode
This enum describes the various ways of placing a function call.
QDBusAdaptorConnector * qDBusFindAdaptorConnector(QDBusAbstractAdaptor *adaptor)
QDBusAdaptorConnector * qDBusCreateAdaptorConnector(QObject *obj)
QDBusAdaptorConnector * qDBusFindAdaptorConnector(QObject *obj)
QDBusAdaptorConnector * qDBusCreateAdaptorConnector(QObject *object)
#define QCLASSINFO_DBUS_INTERFACE
QDBusAdaptorConnector * qDBusFindAdaptorConnector(QObject *object)
Q_DECLARE_TYPEINFO(QObjectPrivate::ConnectionList, Q_RELOCATABLE_TYPE)