swift
Loading...
Searching...
No Matches
dbusserver.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3
5
6#ifndef SWIFT_MISC_DBUSSERVER_H
7#define SWIFT_MISC_DBUSSERVER_H
8
9#include <QDBusConnection>
10#include <QDBusError>
11#include <QFlags>
12#include <QMap>
13#include <QObject>
14#include <QScopedPointer>
15#include <QString>
16
17#include "misc/logcategories.h"
19
20class QDBusServer;
21
23#define SWIFT_SERVICENAME "org.swift-project"
24
25namespace swift::misc
26{
34 {
36
37 public:
39 static const QString &coreServiceName();
40
42 static const QString &coreServiceName(const QDBusConnection &connection);
43
45 static const QStringList &getLogCategories();
46
49 {
50 SERVERMODE_P2P,
51 SERVERMODE_SESSIONBUS,
52 SERVERMODE_SYSTEMBUS
53 };
54
56 CDBusServer(const QString &address, QObject *parent = nullptr) : CDBusServer(coreServiceName(), address, parent)
57 {}
58
60 CDBusServer(const QString &service, const QString &address, QObject *parent = nullptr);
61
63 ~CDBusServer() override;
64
66 void addObject(const QString &name, QObject *object);
67
69 QDBusError lastQDBusServerError() const;
70
72 const QDBusServer *qDBusServer() const;
73
75 bool hasQDBusServer() const;
76
78 void removeAllObjects();
79
81 static const QDBusConnection &defaultConnection();
82
84 static const QString &sessionBusAddress();
85
87 static const QString &systemBusAddress();
88
90 static QDBusConnection connectToDBus(const QString &dbusAddress, const QString &name = {});
91
93 static void disconnectFromDBus(const QDBusConnection &connection, const QString &dBusAddress);
94
98 static QString p2pAddress(const QString &host, const QString &port = "");
99
101 static const QString &p2pConnectionName();
102
106 static QString normalizeAddress(const QString &address);
107
109 static ServerMode modeOfAddress(QString address);
110
112 static const QString &modeToString(ServerMode mode);
113
115 static bool isQtDBusAddress(const QString &address);
116
119 static bool isSessionOrSystemAddress(const QString &address);
120
122 static bool isP2PAddress(const QString &address);
123
125 static bool isP2PConnection(const QDBusConnection &connection);
126
128 static bool dBusAddressToHostAndPort(const QString &dbusAddress, QString &o_host, int &o_port);
129
131 static bool dBusAddressToHostAndPort(const QString &dbusAddress, QString &o_host, QString &o_port);
132
134 static bool isQtDefaultConnection(const QDBusConnection &connection);
135
139 static bool isDBusAvailable(const QString &host, int port, int timeoutMs = 1500);
140 static bool isDBusAvailable(const QString &host, int port, QString &message, int timeoutMs = 1500);
141 static bool isDBusAvailable(const QString &dbusAddress, QString &message, int timeoutMs = 1500);
142 static bool isDBusAvailable(const QString &dbusAddress, int timeoutMs = 1500);
144
145 private:
146 ServerMode m_serverMode = SERVERMODE_P2P;
147 QScopedPointer<QDBusServer> m_busServer;
148 QMap<QString, QObject *> m_objects;
149 QMap<QString, QDBusConnection> m_connections;
150
152 static QString getDBusInterfaceFromClassInfo(QObject *object);
153
155 static QDBusConnection::RegisterOptions registerOptions();
156
158 bool registerObjectsWithP2PConnection(QDBusConnection connection);
159 };
160} // namespace swift::misc
161
162#endif // SWIFT_MISC_DBUSSERVER_H
Custom DBusServer.
Definition dbusserver.h:34
static const QStringList & getLogCategories()
Log categories.
CDBusServer(const QString &address, QObject *parent=nullptr)
Construct a server for the core service.
Definition dbusserver.h:56
static const QString & coreServiceName()
Default service name.
Free functions in swift::misc.
typedef RegisterOptions
QObject(QObject *parent)
Q_OBJECTQ_OBJECT
QObject * parent() const const
#define SWIFT_MISC_EXPORT
Export a class or function from the library.