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
5//
6// W A R N I N G
7// -------------
8//
9// This file is not part of the public API. This header file may
10// change from version to version without notice, or even be
11// removed.
12//
13// We mean it.
14//
15//
16
17#ifndef QDBUSCONNECTIONMANAGER_P_H
18#define QDBUSCONNECTIONMANAGER_P_H
19
20#include <QtDBus/private/qtdbusglobal_p.h>
21#include "qdbusconnection_p.h"
22#include "private/qthread_p.h"
23
24#ifndef QT_NO_DBUS
25
26QT_BEGIN_NAMESPACE
27
28class QDBusServer;
29
30class QDBusConnectionManager : public QDaemonThread
31{
32 Q_OBJECT
33public:
34 QDBusConnectionManager();
35 ~QDBusConnectionManager();
36 static QDBusConnectionManager* instance();
37
38 QDBusConnectionPrivate *busConnection(QDBusConnection::BusType type);
39 QDBusConnectionPrivate *existingConnection(const QString &name) const;
40
41 void removeConnections(const QStringList &names);
42 void disconnectFrom(const QString &name, QDBusConnectionPrivate::ConnectionMode mode);
43 void addConnection(const QString &name, QDBusConnectionPrivate *c);
44
45 QDBusConnectionPrivate *connectToBus(QDBusConnection::BusType type, const QString &name, bool suspendedDelivery);
46 QDBusConnectionPrivate *connectToBus(const QString &address, const QString &name);
47 QDBusConnectionPrivate *connectToPeer(const QString &address, const QString &name);
48
49 void createServer(const QString &address, QDBusServer *server);
50
51protected:
52 void run() override;
53
54private:
55 QDBusConnectionPrivate *doConnectToStandardBus(QDBusConnection::BusType type,
56 const QString &name, bool suspendedDelivery);
57 QDBusConnectionPrivate *doConnectToBus(const QString &address, const QString &name);
58 QDBusConnectionPrivate *doConnectToPeer(const QString &address, const QString &name);
59
60 mutable QMutex mutex;
61 QHash<QString, QDBusConnectionPrivate *> connectionHash;
62 QDBusConnectionPrivate *connection(const QString &name) const;
63 void removeConnection(const QString &name);
64 void setConnection(const QString &name, QDBusConnectionPrivate *c);
65
66 QMutex defaultBusMutex;
67 QDBusConnectionPrivate *defaultBuses[2];
68};
69
70QT_END_NAMESPACE
71
72#endif // QT_NO_DBUS
73#endif
74

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtbase/src/dbus/qdbusconnectionmanager_p.h