aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppRemoteMethod.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/QXmppRemoteMethod.h')
-rw-r--r--source/QXmppRemoteMethod.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/source/QXmppRemoteMethod.h b/source/QXmppRemoteMethod.h
new file mode 100644
index 00000000..b1a8c00d
--- /dev/null
+++ b/source/QXmppRemoteMethod.h
@@ -0,0 +1,41 @@
+#ifndef QXMPPREMOTEMETHOD_H
+#define QXMPPREMOTEMETHOD_H
+
+#include <QObject>
+#include <QVariant>
+
+#include "QXmppRpcIq.h"
+
+class QXmppClient;
+class QXmppStream;
+
+struct QXmppRemoteMethodResult {
+ QXmppRemoteMethodResult() : hasError(false), code(0) { }
+ bool hasError;
+ int code;
+ QString errorMessage;
+ QVariant result;
+};
+
+class QXmppRemoteMethod : public QObject
+{
+ Q_OBJECT
+public:
+ QXmppRemoteMethod(const QString &jid, const QString &method, const QVariantList &args, QXmppClient *client);
+ QXmppRemoteMethodResult call( );
+
+private slots:
+ void gotError( const QXmppRpcErrorIq &iq );
+ void gotResult( const QXmppRpcResponseIq &iq );
+
+signals:
+ void callDone();
+
+private:
+ QXmppRpcInvokeIq m_payload;
+ QXmppClient *m_client;
+ QXmppRemoteMethodResult m_result;
+
+};
+
+#endif // QXMPPREMOTEMETHOD_H