24 #ifndef SIGNON_ASYNC_DBUS_PROXY_H 25 #define SIGNON_ASYNC_DBUS_PROXY_H 32 class QDBusAbstractInterface;
33 class QDBusConnection;
34 class QDBusObjectPath;
35 class QDBusPendingCallWatcher;
46 class PendingCall:
public QObject
56 void finished(QDBusPendingCallWatcher *watcher);
57 void success(QDBusPendingCallWatcher *watcher);
58 void error(
const QDBusError &error);
59 void requeueRequested();
62 void onFinished(QDBusPendingCallWatcher *watcher);
63 void onInterfaceDestroyed();
64 void fail(
const QDBusError &error);
67 friend class AsyncDBusProxy;
68 PendingCall(
const QString &method,
69 const QList<QVariant> &args,
71 void doCall(QDBusAbstractInterface *interface);
75 QList<QVariant> m_args;
76 QDBusPendingCallWatcher *m_watcher;
77 bool m_interfaceWasDestroyed;
80 class AsyncDBusProxy:
public QObject
85 AsyncDBusProxy(
const QString &service,
86 const char *interface,
87 QObject *clientObject);
90 void setObjectPath(
const QDBusObjectPath &objectPath);
91 void setError(
const QDBusError &error);
93 PendingCall *queueCall(
const QString &method,
94 const QList<QVariant> &args,
95 const char *replySlot = 0,
96 const char *errorSlot = 0);
97 PendingCall *queueCall(
const QString &method,
98 const QList<QVariant> &args,
100 const char *replySlot,
101 const char *errorSlot);
102 bool connect(
const char *name, QObject *receiver,
const char *slot);
105 void setConnection(
const QDBusConnection &connection);
106 void setDisconnected();
109 void connectionNeeded();
110 void objectPathNeeded();
118 void setStatus(Status status);
120 void enqueue(PendingCall *call);
123 void onCallFinished(QDBusPendingCallWatcher *watcher);
124 void onRequeueRequested();
127 QString m_serviceName;
128 const char *m_interfaceName;
130 QDBusConnection *m_connection;
131 QObject *m_clientObject;
132 QQueue<PendingCall *> m_operationsQueue;
133 QQueue<Connection *> m_connectionsQueue;
134 DBusInterface *m_interface;
136 QDBusError m_lastError;
139 class SignondAsyncDBusProxy:
public AsyncDBusProxy
143 SignondAsyncDBusProxy(
const char *interface,
144 QObject *clientObject);
145 ~SignondAsyncDBusProxy();
148 void setupConnection();
157 #endif // SIGNON_ASYNC_DBUS_PROXY_H