akonadi
21 #include "dbusconnectionpool.h"
22 #include <QCoreApplication>
24 #include <QThreadStorage>
27 QAtomicInt s_connectionCounter;
29 class DBusConnectionPoolPrivate
32 DBusConnectionPoolPrivate()
33 : m_connection(QDBusConnection::connectToBus(
34 QDBusConnection::SessionBus,
35 QString::fromLatin1(
"AkonadiKde%1").arg(newNumber())))
38 ~DBusConnectionPoolPrivate() {
39 QDBusConnection::disconnectFromBus(m_connection.name());
42 QDBusConnection connection()
const {
47 static int newNumber() {
48 return s_connectionCounter.fetchAndAddAcquire(1);
50 QDBusConnection m_connection;
54 QThreadStorage<DBusConnectionPoolPrivate *> s_perThreadConnection;
56 QDBusConnection Akonadi::DBusConnectionPool::threadConnection()
58 if (!QCoreApplication::instance() || QCoreApplication::instance()->thread() == QThread::currentThread()) {
59 return QDBusConnection::sessionBus();
61 if (!s_perThreadConnection.hasLocalData()) {
62 s_perThreadConnection.setLocalData(
new DBusConnectionPoolPrivate);
64 return s_perThreadConnection.localData()->connection();
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Tue Jul 28 2020 00:00:00 by
doxygen 1.8.18 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.