diff options
Diffstat (limited to 'qt/src/qdbusconnection_p.h')
-rw-r--r-- | qt/src/qdbusconnection_p.h | 245 |
1 files changed, 0 insertions, 245 deletions
diff --git a/qt/src/qdbusconnection_p.h b/qt/src/qdbusconnection_p.h deleted file mode 100644 index bab0b65d..00000000 --- a/qt/src/qdbusconnection_p.h +++ /dev/null @@ -1,245 +0,0 @@ -/* qdbusconnection_p.h QDBusConnection private object - * - * Copyright (C) 2005 Harald Fernengel <harry@kdevelop.org> - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira <thiago.macieira@trolltech.com> - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSCONNECTION_P_H -#define QDBUSCONNECTION_P_H - -#include "qdbuserror.h" - -#include <QtCore/qatomic.h> -#include <QtCore/qeventloop.h> -#include <QtCore/qhash.h> -#include <QtCore/qmutex.h> -#include <QtCore/qobject.h> -#include <QtCore/qpointer.h> -#include <QtCore/qreadwritelock.h> -#include <QtCore/qvarlengtharray.h> -#include <QtCore/qvector.h> - -#include <dbus/dbus.h> - -#include "qdbusmessage.h" - -class QDBusMessage; -class QSocketNotifier; -class QTimerEvent; -class QDBusObjectPrivate; -class CallDeliveryEvent; -class QMetaMethod; -class QDBusInterfacePrivate; -struct QDBusMetaObject; -class QDBusAbstractInterface; -class QDBusBusService; - -class QDBusConnectionPrivate: public QObject -{ - Q_OBJECT -public: - // structs and enums - enum ConnectionMode { InvalidMode, ServerMode, ClientMode }; - - struct Watcher - { - Watcher(): watch(0), read(0), write(0) {} - DBusWatch *watch; - QSocketNotifier *read; - QSocketNotifier *write; - }; - - struct SignalHook - { - inline SignalHook() : obj(0), midx(-1) { } - QString sender, path, signature; - QObject* obj; - int midx; - QList<int> params; - }; - - struct ObjectTreeNode - { - struct Data - { - QString name; - ObjectTreeNode *node; - - inline bool operator<(const QString &other) const - { return name < other; } - }; - - inline ObjectTreeNode() : obj(0), flags(0) { } - inline ~ObjectTreeNode() { clear(); } - inline void clear() - { - foreach (const Data &entry, children) { - entry.node->clear(); - delete entry.node; - } - children.clear(); - } - - QObject* obj; - int flags; - QVector<Data> children; - }; - -public: - // typedefs - typedef QMultiHash<int, Watcher> WatcherHash; - typedef QHash<int, DBusTimeout *> TimeoutHash; - typedef QMultiHash<QString, SignalHook> SignalHookHash; - typedef QHash<QString, QDBusMetaObject* > MetaObjectHash; - -public: - // public methods - QDBusConnectionPrivate(QObject *parent = 0); - ~QDBusConnectionPrivate(); - - void bindToApplication(); - - void setConnection(DBusConnection *connection); - void setServer(DBusServer *server); - void closeConnection(); - void timerEvent(QTimerEvent *e); - - QString getNameOwner(const QString &service); - - int send(const QDBusMessage &message) const; - QDBusMessage sendWithReply(const QDBusMessage &message, int mode); - int sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, - const char *method); - void connectSignal(const QString &key, const SignalHook &hook); - void registerObject(const ObjectTreeNode *node); - void connectRelay(const QString &service, const QString &path, const QString &interface, - QDBusAbstractInterface *receiver, const char *signal); - void disconnectRelay(const QString &service, const QString &path, const QString &interface, - QDBusAbstractInterface *receiver, const char *signal); - - bool handleSignal(const QString &key, const QDBusMessage &msg); - bool handleSignal(const QDBusMessage &msg); - bool handleObjectCall(const QDBusMessage &message); - bool handleError(); - - bool activateSignal(const SignalHook& hook, const QDBusMessage &msg); - bool activateCall(QObject* object, int flags, const QDBusMessage &msg); - bool activateObject(const ObjectTreeNode *node, const QDBusMessage &msg); - bool activateInternalFilters(const ObjectTreeNode *node, const QDBusMessage &msg); - - void postCallDeliveryEvent(CallDeliveryEvent *data); - CallDeliveryEvent *postedCallDeliveryEvent(); - void deliverCall(const CallDeliveryEvent &data) const; - - QDBusInterfacePrivate *findInterface(const QString &service, const QString &path, - const QString &interface); - -protected: - virtual void customEvent(QEvent *event); - -private: - QDBusMetaObject *findMetaObject(const QString &service, const QString &path, - const QString &interface); - -public slots: - // public slots - void doDispatch(); - void socketRead(int); - void socketWrite(int); - void objectDestroyed(QObject *o); - void relaySignal(QObject *obj, const char *interface, const char *name, const QVariantList &args); - -public: - // public member variables - QString name; // this connection's name - - DBusError error; - QDBusError lastError; - - QAtomic ref; - QReadWriteLock lock; - ConnectionMode mode; - DBusConnection *connection; - DBusServer *server; - QDBusBusService *busService; - - WatcherHash watchers; - TimeoutHash timeouts; - SignalHookHash signalHooks; - QList<DBusTimeout *> pendingTimeouts; - - ObjectTreeNode rootNode; - MetaObjectHash cachedMetaObjects; - - QMutex callDeliveryMutex; - CallDeliveryEvent *callDeliveryState; // protected by the callDeliveryMutex mutex - -public: - // static methods - static int messageMetaType; - static int registerMessageMetaType(); - static int findSlot(QObject *obj, const QByteArray &normalizedName, QList<int>& params); - static bool prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, - const QString &service, const QString &path, - const QString &interface, const QString &name, - QObject *receiver, const char *signal, int minMIdx, - bool buildSignature); - static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *); - static void messageResultReceived(DBusPendingCall *, void *); -}; - -class QDBusReplyWaiter: public QEventLoop -{ - Q_OBJECT -public: - QDBusMessage replyMsg; - -public slots: - void reply(const QDBusMessage &msg); -}; - -// in qdbusmisc.cpp -extern int qDBusParametersForMethod(const QMetaMethod &mm, QList<int>& metaTypes); -extern int qDBusNameToTypeId(const char *name); -extern bool qDBusCheckAsyncTag(const char *tag); - -// in qdbusinternalfilters.cpp -extern QString qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node); -extern void qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg); -extern void qDBusPropertyGet(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg); -extern void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg); - -#endif |