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 {
return m_connection; }
45 static int newNumber() {
46 return s_connectionCounter.fetchAndAddAcquire( 1 );
48 QDBusConnection m_connection;
52 QThreadStorage<DBusConnectionPoolPrivate *> s_perThreadConnection;
54 QDBusConnection Akonadi::DBusConnectionPool::threadConnection()
56 if ( !QCoreApplication::instance() || QCoreApplication::instance()->thread() == QThread::currentThread() ) {
57 return QDBusConnection::sessionBus();
59 if ( !s_perThreadConnection.hasLocalData() ) {
60 s_perThreadConnection.setLocalData(
new DBusConnectionPoolPrivate );
62 return s_perThreadConnection.localData()->connection();
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:00:27 by
doxygen 1.8.7 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.