25 #ifndef SIGNON_ASYNC_DBUS_PROXY_H
26 #define SIGNON_ASYNC_DBUS_PROXY_H
33 class QDBusAbstractInterface;
34 class QDBusConnection;
35 class QDBusObjectPath;
36 class QDBusPendingCallWatcher;
47 class PendingCall:
public QObject
57 void finished(QDBusPendingCallWatcher *watcher);
58 void success(QDBusPendingCallWatcher *watcher);
59 void error(
const QDBusError &error);
60 void requeueRequested();
63 void onFinished(QDBusPendingCallWatcher *watcher);
64 void onInterfaceDestroyed();
65 void fail(
const QDBusError &error);
68 friend class AsyncDBusProxy;
69 PendingCall(
const QString &method,
70 const QList<QVariant> &args,
72 void doCall(QDBusAbstractInterface *interface);
76 QList<QVariant> m_args;
77 QDBusPendingCallWatcher *m_watcher;
78 bool m_interfaceWasDestroyed;
81 class AsyncDBusProxy:
public QObject
86 AsyncDBusProxy(
const QString &service,
87 const char *interface,
88 QObject *clientObject);
91 void setObjectPath(
const QDBusObjectPath &objectPath);
92 void setError(
const QDBusError &error);
94 PendingCall *queueCall(
const QString &method,
95 const QList<QVariant> &args,
96 const char *replySlot = 0,
97 const char *errorSlot = 0);
98 PendingCall *queueCall(
const QString &method,
99 const QList<QVariant> &args,
101 const char *replySlot,
102 const char *errorSlot);
103 bool connect(
const char *name, QObject *receiver,
const char *slot);
106 void setConnection(
const QDBusConnection &connection);
107 void setDisconnected();
110 void connectionNeeded();
111 void objectPathNeeded();
119 void setStatus(Status status);
121 void enqueue(PendingCall *call);
124 void onCallFinished(QDBusPendingCallWatcher *watcher);
125 void onRequeueRequested();
128 QString m_serviceName;
129 const char *m_interfaceName;
131 QDBusConnection *m_connection;
132 QObject *m_clientObject;
133 QQueue<PendingCall *> m_operationsQueue;
134 QQueue<Connection *> m_connectionsQueue;
135 DBusInterface *m_interface;
137 QDBusError m_lastError;
140 class SignondAsyncDBusProxy:
public AsyncDBusProxy
144 SignondAsyncDBusProxy(
const char *interface,
145 QObject *clientObject);
146 ~SignondAsyncDBusProxy();
149 void setupConnection();
158 #endif // SIGNON_ASYNC_DBUS_PROXY_H