akonadi
21#include "dbusconnectionpool.h"
22#include <QCoreApplication>
24#include <QThreadStorage>
27QAtomicInt s_connectionCounter;
29class 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;
54QThreadStorage<DBusConnectionPoolPrivate *> s_perThreadConnection;
56QDBusConnection 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-2022 The KDE developers.
Generated on Thu Jul 21 2022 00:00:00 by
doxygen 1.9.5 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.