diff options
| author | Linus Jahn <lnj@kaidan.im> | 2021-04-28 18:26:21 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-06-27 20:17:18 +0200 |
| commit | c02b2a1d93b75e5210a2024b398df83c121ae7e7 (patch) | |
| tree | 6d810590cf3f5acb3af7692c0723d7253dd6abfc /src/client/QXmppDiscoveryManager.cpp | |
| parent | 9c9377f609d87578051ab6521544d1f3d80b8011 (diff) | |
| download | qxmpp-c02b2a1d93b75e5210a2024b398df83c121ae7e7.tar.gz | |
DiscoveryManager: Add QFuture-based requests
Diffstat (limited to 'src/client/QXmppDiscoveryManager.cpp')
| -rw-r--r-- | src/client/QXmppDiscoveryManager.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/client/QXmppDiscoveryManager.cpp b/src/client/QXmppDiscoveryManager.cpp index 0cb34831..6f7d3654 100644 --- a/src/client/QXmppDiscoveryManager.cpp +++ b/src/client/QXmppDiscoveryManager.cpp @@ -29,6 +29,7 @@ #include "QXmppDataForm.h" #include "QXmppDiscoveryIq.h" #include "QXmppGlobal.h" +#include "QXmppGlobal_p.h" #include "QXmppStream.h" #include <QCoreApplication> @@ -44,6 +45,24 @@ public: QXmppDataForm clientInfoForm; }; +/// +/// \typedef QXmppDiscoveryManager::InfoResult +/// +/// Contains the discovery information result in the form of an QXmppDiscoveryIq +/// or (in case the request did not succeed) a QXmppStanza::Error. +/// +/// \since QXmpp 1.5 +/// + +/// +/// \typedef QXmppDiscoveryManager::ItemsResult +/// +/// Contains a list of service discovery items or (in case the request did not +/// succeed) a QXmppStanza::Error. +/// +/// \since QXmpp 1.5 +/// + QXmppDiscoveryManager::QXmppDiscoveryManager() : d(new QXmppDiscoveryManagerPrivate) { @@ -104,6 +123,54 @@ QString QXmppDiscoveryManager::requestItems(const QString& jid, const QString& n } /// +/// Requests information from the specified XMPP entity. +/// +/// \param jid The target entity's JID. +/// \param node The target node (optional). +/// +/// \warning THIS API IS NOT FINALIZED YET! +/// +/// \since QXmpp 1.5 +/// +QFuture<QXmppDiscoveryManager::InfoResult> QXmppDiscoveryManager::requestDiscoInfo(const QString &jid, const QString &node) +{ + QXmppDiscoveryIq request; + request.setType(QXmppIq::Get); + request.setQueryType(QXmppDiscoveryIq::InfoQuery); + request.setTo(jid); + if (!node.isEmpty()) { + request.setQueryNode(node); + } + + return chainIq<InfoResult, QXmppDiscoveryIq>(client()->sendIq(request), this); +} + +/// +/// Requests items from the specified XMPP entity. +/// +/// \param jid The target entity's JID. +/// \param node The target node (optional). +/// +/// \warning THIS API IS NOT FINALIZED YET! +/// +/// \since QXmpp 1.5 +/// +QFuture<QXmppDiscoveryManager::ItemsResult> QXmppDiscoveryManager::requestDiscoItems(const QString &jid, const QString &node) +{ + QXmppDiscoveryIq request; + request.setType(QXmppIq::Get); + request.setQueryType(QXmppDiscoveryIq::ItemsQuery); + request.setTo(jid); + if (!node.isEmpty()) { + request.setQueryNode(node); + } + + return chainIq<ItemsResult, QXmppDiscoveryIq>(client()->sendIq(request), this, [](QXmppDiscoveryIq &&iq) { + return iq.items(); + }); +} + +/// /// Returns the client's full capabilities. /// QXmppDiscoveryIq QXmppDiscoveryManager::capabilities() |
