Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdbusintegrator.cpp File Reference

(99f78eb7085b19c78153bdfbff9d24a2098a2a57)

#include "qdbusintegrator_p.h"
#include <qcoreapplication.h>
#include <qelapsedtimer.h>
#include <qloggingcategory.h>
#include <qmetaobject.h>
#include <qobject.h>
#include <qsocketnotifier.h>
#include <qstringlist.h>
#include <qtimer.h>
#include <qthread.h>
#include <private/qlocking_p.h>
#include <QtCore/qset.h>
#include "qdbusargument.h"
#include "qdbusconnection_p.h"
#include "qdbusconnectionmanager_p.h"
#include "qdbusinterface_p.h"
#include "qdbusmessage.h"
#include "qdbusmetatype.h"
#include "qdbusmetatype_p.h"
#include "qdbusabstractadaptor.h"
#include "qdbusabstractadaptor_p.h"
#include "qdbusserver.h"
#include "qdbusutil_p.h"
#include "qdbusvirtualobject.h"
#include "qdbusmessage_p.h"
#include "qdbuscontext_p.h"
#include "qdbuspendingcall_p.h"
#include "qdbusthreaddebug_p.h"
#include <algorithm>
+ Include dependency graph for qdbusintegrator.cpp:

Go to the source code of this file.

Classes

class  QDBusSpyHookList
 
class  QDBusBlockingCallWatcher
 

Macros

#define qDBusDebug   if (::isDebugging.loadRelaxed() == 0); else qDebug
 

Functions

static QDebug operator<< (QDebug dbg, const QThread *th)
 
static dbus_bool_t qDBusAddTimeout (DBusTimeout *timeout, void *data)
 
static void qDBusRemoveTimeout (DBusTimeout *timeout, void *data)
 
static void qDBusToggleTimeout (DBusTimeout *timeout, void *data)
 
static dbus_bool_t qDBusAddWatch (DBusWatch *watch, void *data)
 
static void qDBusRemoveWatch (DBusWatch *watch, void *data)
 
static void qDBusToggleWatch (DBusWatch *watch, void *data)
 
static void qDBusUpdateDispatchStatus (DBusConnection *connection, DBusDispatchStatus new_status, void *data)
 
static void qDBusNewConnection (DBusServer *server, DBusConnection *connection, void *data)
 
static QByteArray buildMatchRule (const QString &service, const QString &objectPath, const QString &interface, const QString &member, const QDBusConnectionPrivate::ArgMatchRules &argMatch, const QString &)
 
static bool findObject (const QDBusConnectionPrivate::ObjectTreeNode *root, const QString &fullpath, int &usedLength, QDBusConnectionPrivate::ObjectTreeNode &result)
 
static QObjectfindChildObject (const QDBusConnectionPrivate::ObjectTreeNode *root, const QString &fullpath, int start)
 
static QDBusConnectionPrivate::ArgMatchRules matchArgsForService (const QString &service, QDBusServiceWatcher::WatchMode mode)
 
Q_DBUS_EXPORT void qDBusAddSpyHook (QDBusSpyCallEvent::Hook)
 
static DBusHandlerResult qDBusSignalFilter (DBusConnection *connection, DBusMessage *message, void *data)
 
static void huntAndDestroy (QObject *needle, QDBusConnectionPrivate::ObjectTreeNode &haystack)
 
static void huntAndUnregister (const QList< QStringView > &pathComponents, int i, QDBusConnection::UnregisterMode mode, QDBusConnectionPrivate::ObjectTreeNode *node)
 
static void huntAndEmit (DBusConnection *connection, DBusMessage *msg, QObject *needle, const QDBusConnectionPrivate::ObjectTreeNode &haystack, bool isScriptable, bool isAdaptor, const QString &path=QString())
 
static int findSlot (const QMetaObject *mo, const QByteArray &name, int flags, const QString &signature_, QList< QMetaType > &metaTypes)
 
static QDBusConnection::ConnectionCapabilities connectionCapabilities (DBusConnection *connection)
 
static void qDBusResultReceived (DBusPendingCall *pending, void *user_data)
 

Variables

static dbus_int32_t server_slot = -1
 
static Q_CONSTINIT QBasicAtomicInt isDebugging = Q_BASIC_ATOMIC_INITIALIZER(-1)
 
static QDBusCallDeliveryEvent *const DIRECT_DELIVERY = (QDBusCallDeliveryEvent *)1
 

Macro Definition Documentation

◆ qDBusDebug

Function Documentation

◆ buildMatchRule()

static QByteArray buildMatchRule ( const QString & service,
const QString & objectPath,
const QString & interface,
const QString & member,
const QDBusConnectionPrivate::ArgMatchRules & argMatch,
const QString &  )
static

Definition at line 338 of file qdbusintegrator.cpp.

References QString::arg(), QString::chop(), i, interface, and QString::isEmpty().

Referenced by QDBusConnectionPrivate::prepareHook().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ connectionCapabilities()

static QDBusConnection::ConnectionCapabilities connectionCapabilities ( DBusConnection * connection)
static

Definition at line 1770 of file qdbusintegrator.cpp.

References QDBusConnectionPrivate::connection, DBUS_TYPE_UNIX_FD, qdbus_resolve_conditionally(), and QDBusConnection::UnixFileDescriptorPassing.

Referenced by QDBusConnectionPrivate::relaySignal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ findChildObject()

static QObject * findChildObject ( const QDBusConnectionPrivate::ObjectTreeNode * root,
const QString & fullpath,
int start )
static

Definition at line 419 of file qdbusintegrator.cpp.

References child, QDBusConnection::ExportChildObjects, QDBusConnectionPrivate::ObjectTreeNode::flags, QStringView::mid(), next, QDBusConnectionPrivate::ObjectTreeNode::obj, and pos.

+ Here is the call graph for this function:

◆ findObject()

static bool findObject ( const QDBusConnectionPrivate::ObjectTreeNode * root,
const QString & fullpath,
int & usedLength,
QDBusConnectionPrivate::ObjectTreeNode & result )
static

◆ findSlot()

◆ huntAndDestroy()

static void huntAndDestroy ( QObject * needle,
QDBusConnectionPrivate::ObjectTreeNode & haystack )
static

Definition at line 589 of file qdbusintegrator.cpp.

References huntAndDestroy().

Referenced by huntAndDestroy(), and QDBusConnectionPrivate::objectDestroyed().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ huntAndEmit()

static void huntAndEmit ( DBusConnection * connection,
DBusMessage * msg,
QObject * needle,
const QDBusConnectionPrivate::ObjectTreeNode & haystack,
bool isScriptable,
bool isAdaptor,
const QString & path = QString() )
static

Definition at line 631 of file qdbusintegrator.cpp.

References connection, QThread::currentThread(), QDBusConnection::ExportAdaptors, QDBusConnection::ExportNonScriptableSignals, QDBusConnection::ExportScriptableSignals, huntAndEmit(), and qDBusDebug.

Referenced by huntAndEmit(), and QDBusConnectionPrivate::relaySignal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ huntAndUnregister()

static void huntAndUnregister ( const QList< QStringView > & pathComponents,
int i,
QDBusConnection::UnregisterMode mode,
QDBusConnectionPrivate::ObjectTreeNode * node )
static

Definition at line 603 of file qdbusintegrator.cpp.

References QList< T >::begin(), QDBusConnectionPrivate::ObjectTreeNode::children, QList< T >::clear(), QList< T >::end(), QList< T >::erase(), QDBusConnectionPrivate::ObjectTreeNode::flags, huntAndUnregister(), i, it, QDBusConnectionPrivate::ObjectTreeNode::obj, and QDBusConnection::UnregisterTree.

Referenced by huntAndUnregister().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ matchArgsForService()

static QDBusConnectionPrivate::ArgMatchRules matchArgsForService ( const QString & service,
QDBusServiceWatcher::WatchMode mode )
static

Definition at line 459 of file qdbusintegrator.cpp.

References QDBusConnectionPrivate::ArgMatchRules::arg0namespace, QString::fromLatin1(), QDBusServiceWatcher::WatchForOwnerChange, QDBusServiceWatcher::WatchForRegistration, and QDBusServiceWatcher::WatchForUnregistration.

+ Here is the call graph for this function:

◆ operator<<()

static QDebug operator<< ( QDebug dbg,
const QThread * th )
inlinestatic

Definition at line 58 of file qdbusintegrator.cpp.

◆ qDBusAddSpyHook()

void qDBusAddSpyHook ( QDBusSpyCallEvent::Hook hook)
extern

Definition at line 486 of file qdbusintegrator.cpp.

References hooks.

◆ qDBusAddTimeout()

static dbus_bool_t qDBusAddTimeout ( DBusTimeout * timeout,
void * data )
static

Definition at line 138 of file qdbusintegrator.cpp.

References QThread::currentThread(), d, Q_ASSERT, and Q_UNLIKELY.

Referenced by qDBusToggleTimeout(), QDBusConnectionPrivate::setConnection(), QDBusConnectionPrivate::setPeer(), and QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusAddWatch()

static dbus_bool_t qDBusAddWatch ( DBusWatch * watch,
void * data )
static

Definition at line 196 of file qdbusintegrator.cpp.

References QSocketNotifier::activated(), QThread::currentThread(), d, DBUS_WATCH_READABLE, DBUS_WATCH_WRITABLE, Q_ASSERT, QSocketNotifier::Read, QDBusConnectionPrivate::socketRead(), QDBusConnectionPrivate::socketWrite(), watch, watcher, and QSocketNotifier::Write.

Referenced by QDBusConnectionPrivate::setConnection(), QDBusConnectionPrivate::setPeer(), and QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusNewConnection()

static void qDBusNewConnection ( DBusServer * server,
DBusConnection * connection,
void * data )
static

Definition at line 286 of file qdbusintegrator.cpp.

References connection, QDBusConnectionPrivate::enableDispatchDelayed(), error, QDBusConnectionManager::instance(), QMetaObject::invokeMethod(), manager, QDBusConnectionPrivate::name, QDBusServer::newConnection(), QString::number(), QDBusConnectionPrivate::q(), Q_ASSERT, Qt::QueuedConnection, server, QDBusConnectionPrivate::setDispatchEnabled(), and QDBusConnectionPrivate::setPeer().

Referenced by QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusRemoveTimeout()

static void qDBusRemoveTimeout ( DBusTimeout * timeout,
void * data )
static

Definition at line 163 of file qdbusintegrator.cpp.

References QSet< T >::begin(), QThread::currentThread(), d, QSet< T >::end(), QSet< T >::erase(), it, QHash< int, DBusTimeout * >::iterator, and Q_ASSERT.

Referenced by qDBusToggleTimeout(), QDBusConnectionPrivate::setConnection(), QDBusConnectionPrivate::setPeer(), and QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusRemoveWatch()

static void qDBusRemoveWatch ( DBusWatch * watch,
void * data )
static

Definition at line 228 of file qdbusintegrator.cpp.

References QThread::currentThread(), d, i, QMultiHash< qintptr, Watcher >::iterator, Q_ASSERT, and watch.

Referenced by QDBusConnectionPrivate::setConnection(), QDBusConnectionPrivate::setPeer(), and QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusResultReceived()

static void qDBusResultReceived ( DBusPendingCall * pending,
void * user_data )
static

Definition at line 1859 of file qdbusintegrator.cpp.

References pending, QDBusPendingCallPrivate::pending, QDBusConnectionPrivate::processFinishedCall(), Q_ASSERT, and user_data.

+ Here is the call graph for this function:

◆ qDBusSignalFilter()

static DBusHandlerResult qDBusSignalFilter ( DBusConnection * connection,
DBusMessage * message,
void * data )
static

Definition at line 520 of file qdbusintegrator.cpp.

References connection, d, DBUS_HANDLER_RESULT_HANDLED, DBUS_HANDLER_RESULT_NOT_YET_HANDLED, QDBusMessagePrivate::fromDBusMessage(), QDBusConnectionPrivate::InvalidMode, Q_ASSERT, Q_UNUSED, and qDBusDebug.

Referenced by QDBusConnectionPrivate::setConnection(), and QDBusConnectionPrivate::setPeer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusToggleTimeout()

static void qDBusToggleTimeout ( DBusTimeout * timeout,
void * data )
static

Definition at line 185 of file qdbusintegrator.cpp.

References Q_ASSERT, qDBusAddTimeout(), and qDBusRemoveTimeout().

Referenced by QDBusConnectionPrivate::setConnection(), QDBusConnectionPrivate::setPeer(), and QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusToggleWatch()

static void qDBusToggleWatch ( DBusWatch * watch,
void * data )
static

Definition at line 251 of file qdbusintegrator.cpp.

References QThread::currentThread(), d, DBUS_WATCH_READABLE, DBUS_WATCH_WRITABLE, i, QMultiHash< qintptr, Watcher >::iterator, Q_ASSERT, and watch.

Referenced by QDBusConnectionPrivate::setConnection(), QDBusConnectionPrivate::setPeer(), and QDBusConnectionPrivate::setServer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qDBusUpdateDispatchStatus()

static void qDBusUpdateDispatchStatus ( DBusConnection * connection,
DBusDispatchStatus new_status,
void * data )
static

Definition at line 278 of file qdbusintegrator.cpp.

References connection, d, DBUS_DISPATCH_DATA_REMAINS, emit, and Q_ASSERT.

Referenced by QDBusConnectionPrivate::setConnection(), and QDBusConnectionPrivate::setPeer().

+ Here is the caller graph for this function:

Variable Documentation

◆ DIRECT_DELIVERY

QDBusCallDeliveryEvent* const DIRECT_DELIVERY = (QDBusCallDeliveryEvent *)1
static

Definition at line 785 of file qdbusintegrator.cpp.

Referenced by QDBusConnectionPrivate::prepareReply().

◆ isDebugging

Q_CONSTINIT QBasicAtomicInt isDebugging = Q_BASIC_ATOMIC_INITIALIZER(-1)
static

Definition at line 55 of file qdbusintegrator.cpp.

Referenced by QDBusConnectionPrivate::QDBusConnectionPrivate().

◆ server_slot

dbus_int32_t server_slot = -1
static