From b17284ee7d674416e0d11f1699f73fcc606262d4 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Tue, 16 Aug 2022 21:00:15 +0200 Subject: Introduce QXmppTask & QXmppPromise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #502. Co-authored-by: Jonah BrĂ¼chert --- src/client/QXmppPubSubManager.h | 169 ++++++++++++++++++++-------------------- 1 file changed, 83 insertions(+), 86 deletions(-) (limited to 'src/client/QXmppPubSubManager.h') diff --git a/src/client/QXmppPubSubManager.h b/src/client/QXmppPubSubManager.h index ddd3840c..4e5ab9f8 100644 --- a/src/client/QXmppPubSubManager.h +++ b/src/client/QXmppPubSubManager.h @@ -14,9 +14,6 @@ #include "QXmppPubSubPublishOptions.h" #include "QXmppResultSet.h" -#include -#include - class QXmppPubSubPublishOptions; class QXmppPubSubSubscribeOptions; @@ -75,73 +72,73 @@ public: ~QXmppPubSubManager(); // Generic PubSub (the PubSub service is the given entity) - QFuture requestNodes(const QString &jid); - QFuture createNode(const QString &jid, const QString &nodeName); - QFuture createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config); - QFuture createInstantNode(const QString &jid); - QFuture createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config); - QFuture deleteNode(const QString &jid, const QString &nodeName); - QFuture requestItemIds(const QString &serviceJid, const QString &nodeName); + QXmppTask requestNodes(const QString &jid); + QXmppTask createNode(const QString &jid, const QString &nodeName); + QXmppTask createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config); + QXmppTask createInstantNode(const QString &jid); + QXmppTask createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config); + QXmppTask deleteNode(const QString &jid, const QString &nodeName); + QXmppTask requestItemIds(const QString &serviceJid, const QString &nodeName); template - QFuture> requestItem(const QString &jid, const QString &nodeName, const QString &itemId); + QXmppTask> requestItem(const QString &jid, const QString &nodeName, const QString &itemId); template - QFuture> requestItem(const QString &jid, const QString &nodeName, StandardItemId itemId); + QXmppTask> requestItem(const QString &jid, const QString &nodeName, StandardItemId itemId); template - QFuture> requestItems(const QString &jid, const QString &nodeName); + QXmppTask> requestItems(const QString &jid, const QString &nodeName); template - QFuture> requestItems(const QString &jid, const QString &nodeName, const QStringList &itemIds); + QXmppTask> requestItems(const QString &jid, const QString &nodeName, const QStringList &itemIds); template - QFuture publishItem(const QString &jid, const QString &nodeName, const T &item); + QXmppTask publishItem(const QString &jid, const QString &nodeName, const T &item); template - QFuture publishItem(const QString &jid, const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions); + QXmppTask publishItem(const QString &jid, const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions); template - QFuture publishItems(const QString &jid, const QString &nodeName, const QVector &items); + QXmppTask publishItems(const QString &jid, const QString &nodeName, const QVector &items); template - QFuture publishItems(const QString &jid, const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions); - QFuture retractItem(const QString &jid, const QString &nodeName, const QString &itemId); - QFuture retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId); - QFuture purgeItems(const QString &jid, const QString &nodeName); - QFuture requestSubscriptions(const QString &jid); - QFuture requestSubscriptions(const QString &jid, const QString &nodeName); - QFuture requestNodeAffiliations(const QString &jid, const QString &nodeName); - QFuture requestAffiliations(const QString &jid); - QFuture requestAffiliations(const QString &jid, const QString &nodeName); - QFuture requestSubscribeOptions(const QString &service, const QString &nodeName); - QFuture requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid); - QFuture setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options); - QFuture setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid); - QFuture requestNodeConfiguration(const QString &service, const QString &nodeName); - QFuture configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config); - QFuture cancelNodeConfiguration(const QString &service, const QString &nodeName); - QFuture subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); - QFuture unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); + QXmppTask publishItems(const QString &jid, const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions); + QXmppTask retractItem(const QString &jid, const QString &nodeName, const QString &itemId); + QXmppTask retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId); + QXmppTask purgeItems(const QString &jid, const QString &nodeName); + QXmppTask requestSubscriptions(const QString &jid); + QXmppTask requestSubscriptions(const QString &jid, const QString &nodeName); + QXmppTask requestNodeAffiliations(const QString &jid, const QString &nodeName); + QXmppTask requestAffiliations(const QString &jid); + QXmppTask requestAffiliations(const QString &jid, const QString &nodeName); + QXmppTask requestSubscribeOptions(const QString &service, const QString &nodeName); + QXmppTask requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid); + QXmppTask setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options); + QXmppTask setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid); + QXmppTask requestNodeConfiguration(const QString &service, const QString &nodeName); + QXmppTask configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config); + QXmppTask cancelNodeConfiguration(const QString &service, const QString &nodeName); + QXmppTask subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); + QXmppTask unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); // PEP-specific (the PubSub service is the current account) - QFuture requestOwnPepNodes() { return requestNodes(client()->configuration().jidBare()); }; - QFuture createOwnPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); } - QFuture createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); } - QFuture deleteOwnPepNode(const QString &nodeName) { return deleteNode(client()->configuration().jidBare(), nodeName); } + QXmppTask requestOwnPepNodes() { return requestNodes(client()->configuration().jidBare()); }; + QXmppTask createOwnPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); } + QXmppTask createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); } + QXmppTask deleteOwnPepNode(const QString &nodeName) { return deleteNode(client()->configuration().jidBare(), nodeName); } template - QFuture> requestOwnPepItem(const QString &nodeName, const QString &itemId) { return requestItem(client()->configuration().jidBare(), nodeName, itemId); } + QXmppTask> requestOwnPepItem(const QString &nodeName, const QString &itemId) { return requestItem(client()->configuration().jidBare(), nodeName, itemId); } template - QFuture> requestOwnPepItem(const QString &nodeName, StandardItemId itemId) { return requestItem(client()->configuration().jidBare(), nodeName, itemId); } + QXmppTask> requestOwnPepItem(const QString &nodeName, StandardItemId itemId) { return requestItem(client()->configuration().jidBare(), nodeName, itemId); } template - QFuture> requestOwnPepItems(const QString &nodeName) { return requestItems(client()->configuration().jidBare(), nodeName); } - QFuture requestOwnPepItemIds(const QString &nodeName) { return requestItemIds(client()->configuration().jidBare(), nodeName); } + QXmppTask> requestOwnPepItems(const QString &nodeName) { return requestItems(client()->configuration().jidBare(), nodeName); } + QXmppTask requestOwnPepItemIds(const QString &nodeName) { return requestItemIds(client()->configuration().jidBare(), nodeName); } template - QFuture publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions); + QXmppTask publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions); template - QFuture publishOwnPepItem(const QString &nodeName, const T &item); + QXmppTask publishOwnPepItem(const QString &nodeName, const T &item); template - QFuture publishOwnPepItems(const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions); + QXmppTask publishOwnPepItems(const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions); template - QFuture publishOwnPepItems(const QString &nodeName, const QVector &items); - QFuture retractOwnPepItem(const QString &nodeName, const QString &itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); } - QFuture retractOwnPepItem(const QString &nodeName, StandardItemId itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); } - QFuture purgeOwnPepItems(const QString &nodeName) { return purgeItems(client()->configuration().jidBare(), nodeName); } - QFuture requestOwnPepNodeConfiguration(const QString &nodeName) { return requestNodeConfiguration(client()->configuration().jidBare(), nodeName); } - QFuture configureOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return configureNode(client()->configuration().jidBare(), nodeName, config); } - QFuture cancelOwnPepNodeConfiguration(const QString &nodeName) { return cancelNodeConfiguration(client()->configuration().jidBare(), nodeName); } + QXmppTask publishOwnPepItems(const QString &nodeName, const QVector &items); + QXmppTask retractOwnPepItem(const QString &nodeName, const QString &itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); } + QXmppTask retractOwnPepItem(const QString &nodeName, StandardItemId itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); } + QXmppTask purgeOwnPepItems(const QString &nodeName) { return purgeItems(client()->configuration().jidBare(), nodeName); } + QXmppTask requestOwnPepNodeConfiguration(const QString &nodeName) { return requestNodeConfiguration(client()->configuration().jidBare(), nodeName); } + QXmppTask configureOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return configureNode(client()->configuration().jidBare(), nodeName, config); } + QXmppTask cancelOwnPepNodeConfiguration(const QString &nodeName) { return cancelNodeConfiguration(client()->configuration().jidBare(), nodeName); } static QString standardItemIdToString(StandardItemId itemId); @@ -155,11 +152,11 @@ private: friend class tst_QXmppPubSubManager; friend class QXmppOmemoManagerPrivate; - QFuture requestFeatures(const QString &serviceJid, ServiceType serviceType = PubSubOrPep); - QFuture requestOwnPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); }; + QXmppTask requestFeatures(const QString &serviceJid, ServiceType serviceType = PubSubOrPep); + QXmppTask requestOwnPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); }; - QFuture publishItem(QXmpp::Private::PubSubIqBase &&iq); - QFuture publishItems(QXmpp::Private::PubSubIqBase &&iq); + QXmppTask publishItem(QXmpp::Private::PubSubIqBase &&iq); + QXmppTask publishItems(QXmpp::Private::PubSubIqBase &&iq); static QXmpp::Private::PubSubIq<> requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds); }; @@ -173,9 +170,9 @@ private: /// \return /// template -QFuture> QXmppPubSubManager::requestItem(const QString &jid, - const QString &nodeName, - const QString &itemId) +QXmppTask> QXmppPubSubManager::requestItem(const QString &jid, + const QString &nodeName, + const QString &itemId) { using namespace QXmpp::Private; using Error = QXmppStanza::Error; @@ -198,9 +195,9 @@ QFuture> QXmppPubSubManager::requestItem(const /// \return /// template -QFuture> QXmppPubSubManager::requestItem(const QString &jid, - const QString &nodeName, - StandardItemId itemId) +QXmppTask> QXmppPubSubManager::requestItem(const QString &jid, + const QString &nodeName, + StandardItemId itemId) { return requestItem(jid, nodeName, standardItemIdToString(itemId)); } @@ -214,8 +211,8 @@ QFuture> QXmppPubSubManager::requestItem(const /// \return /// template -QFuture> QXmppPubSubManager::requestItems(const QString &jid, - const QString &nodeName) +QXmppTask> QXmppPubSubManager::requestItems(const QString &jid, + const QString &nodeName) { return requestItems(jid, nodeName, {}); } @@ -231,9 +228,9 @@ QFuture> QXmppPubSubManager::requestItems(con /// \return /// template -QFuture> QXmppPubSubManager::requestItems(const QString &jid, - const QString &nodeName, - const QStringList &itemIds) +QXmppTask> QXmppPubSubManager::requestItems(const QString &jid, + const QString &nodeName, + const QStringList &itemIds) { using namespace QXmpp::Private; return chainIq(client()->sendIq(requestItemsIq(jid, nodeName, itemIds)), this, @@ -257,9 +254,9 @@ QFuture> QXmppPubSubManager::requestItems(con /// \return /// template -QFuture QXmppPubSubManager::publishItem(const QString &jid, - const QString &nodeName, - const T &item) +QXmppTask QXmppPubSubManager::publishItem(const QString &jid, + const QString &nodeName, + const T &item) { QXmpp::Private::PubSubIq request; request.setTo(jid); @@ -281,10 +278,10 @@ QFuture QXmppPubSubManager::publishItem(c /// \return /// template -QFuture QXmppPubSubManager::publishItem(const QString &jid, - const QString &nodeName, - const T &item, - const QXmppPubSubPublishOptions &publishOptions) +QXmppTask QXmppPubSubManager::publishItem(const QString &jid, + const QString &nodeName, + const T &item, + const QXmppPubSubPublishOptions &publishOptions) { QXmpp::Private::PubSubIq request; request.setTo(jid); @@ -303,9 +300,9 @@ QFuture QXmppPubSubManager::publishItem(c /// \return /// template -QFuture QXmppPubSubManager::publishItems(const QString &jid, - const QString &nodeName, - const QVector &items) +QXmppTask QXmppPubSubManager::publishItems(const QString &jid, + const QString &nodeName, + const QVector &items) { QXmpp::Private::PubSubIq request; request.setTo(jid); @@ -324,10 +321,10 @@ QFuture QXmppPubSubManager::publishItems /// \return /// template -QFuture QXmppPubSubManager::publishItems(const QString &jid, - const QString &nodeName, - const QVector &items, - const QXmppPubSubPublishOptions &publishOptions) +QXmppTask QXmppPubSubManager::publishItems(const QString &jid, + const QString &nodeName, + const QVector &items, + const QXmppPubSubPublishOptions &publishOptions) { QXmpp::Private::PubSubIq request; request.setTo(jid); @@ -346,7 +343,7 @@ QFuture QXmppPubSubManager::publishItems /// \return /// template -QFuture QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions) +QXmppTask QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions) { return publishItem(client()->configuration().jidBare(), nodeName, item, publishOptions); } @@ -359,7 +356,7 @@ QFuture QXmppPubSubManager::publishOwnPep /// \return /// template -QFuture QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item) +QXmppTask QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item) { return publishItem(client()->configuration().jidBare(), nodeName, item); } @@ -374,7 +371,7 @@ QFuture QXmppPubSubManager::publishOwnPep /// \return /// template -QFuture QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions) +QXmppTask QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions) { return publishItems(client()->configuration().jidBare(), nodeName, items, publishOptions); } @@ -387,7 +384,7 @@ QFuture QXmppPubSubManager::publishOwnPe /// \return /// template -QFuture QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector &items) +QXmppTask QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector &items) { return publishItems(client()->configuration().jidBare(), nodeName, items); } -- cgit v1.2.3