aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-08-16 21:00:15 +0200
committerLinus Jahn <lnj@kaidan.im>2023-01-03 22:05:54 +0100
commitb17284ee7d674416e0d11f1699f73fcc606262d4 (patch)
tree86597f2bc2a1ed2d257e0cbf8e7de1ca54080c08 /src/client
parent3271c6642439d4d3c0d8c634e2b3f4cf17b908a0 (diff)
downloadqxmpp-b17284ee7d674416e0d11f1699f73fcc606262d4.tar.gz
Introduce QXmppTask & QXmppPromise
Closes #502. Co-authored-by: Jonah BrĂ¼chert <jbb@kaidan.im>
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppAtmManager.cpp101
-rw-r--r--src/client/QXmppAtmManager.h18
-rw-r--r--src/client/QXmppAtmTrustMemoryStorage.cpp24
-rw-r--r--src/client/QXmppAtmTrustMemoryStorage.h12
-rw-r--r--src/client/QXmppAtmTrustStorage.h12
-rw-r--r--src/client/QXmppCarbonManagerV2.cpp2
-rw-r--r--src/client/QXmppClient.cpp75
-rw-r--r--src/client/QXmppClient.h14
-rw-r--r--src/client/QXmppDiscoveryManager.cpp4
-rw-r--r--src/client/QXmppDiscoveryManager.h6
-rw-r--r--src/client/QXmppE2eeExtension.h10
-rw-r--r--src/client/QXmppEntityTimeManager.cpp2
-rw-r--r--src/client/QXmppEntityTimeManager.h4
-rw-r--r--src/client/QXmppHttpUploadManager.cpp14
-rw-r--r--src/client/QXmppIqHandling.h6
-rw-r--r--src/client/QXmppMamManager.cpp28
-rw-r--r--src/client/QXmppMamManager.h14
-rw-r--r--src/client/QXmppMessageReceiptManager.cpp1
-rw-r--r--src/client/QXmppOutgoingClient.cpp3
-rw-r--r--src/client/QXmppOutgoingClient.h2
-rw-r--r--src/client/QXmppPep_p.h2
-rw-r--r--src/client/QXmppPubSubManager.cpp59
-rw-r--r--src/client/QXmppPubSubManager.h169
-rw-r--r--src/client/QXmppRosterManager.cpp16
-rw-r--r--src/client/QXmppRosterManager.h12
-rw-r--r--src/client/QXmppTrustManager.cpp59
-rw-r--r--src/client/QXmppTrustManager.h37
-rw-r--r--src/client/QXmppTrustMemoryStorage.cpp72
-rw-r--r--src/client/QXmppTrustMemoryStorage.h42
-rw-r--r--src/client/QXmppTrustStorage.h37
-rw-r--r--src/client/QXmppUploadRequestManager.cpp8
-rw-r--r--src/client/QXmppUploadRequestManager.h20
-rw-r--r--src/client/QXmppUserLocationManager.cpp4
-rw-r--r--src/client/QXmppUserLocationManager.h6
-rw-r--r--src/client/QXmppUserTuneManager.cpp4
-rw-r--r--src/client/QXmppUserTuneManager.h6
36 files changed, 444 insertions, 461 deletions
diff --git a/src/client/QXmppAtmManager.cpp b/src/client/QXmppAtmManager.cpp
index 0f97452a..e6df2679 100644
--- a/src/client/QXmppAtmManager.cpp
+++ b/src/client/QXmppAtmManager.cpp
@@ -77,12 +77,12 @@ QXmppAtmManager::QXmppAtmManager(QXmppAtmTrustStorage *trustStorage)
/// \param keyIdsForAuthentication IDs of the keys being authenticated
/// \param keyIdsForDistrusting IDs of the keys being distrusted
///
-QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting)
+QXmppTask<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting)
{
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
auto future = keys(encryption, TrustLevel::Authenticated | TrustLevel::ManuallyDistrusted);
- await(future, this, [=](QHash<TrustLevel, QMultiHash<QString, QByteArray>> keys) mutable {
+ future.then(this, [=](QHash<TrustLevel, QMultiHash<QString, QByteArray>> keys) mutable {
const auto authenticatedKeys = keys.value(TrustLevel::Authenticated);
const auto manuallyDistrustedKeys = keys.value(TrustLevel::ManuallyDistrusted);
const auto ownJid = client()->configuration().jidBare();
@@ -110,7 +110,7 @@ QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, con
if (modifiedAuthenticatedKeys.isEmpty() && modifiedManuallyDistrustedKeys.isEmpty()) {
// Skip further processing if there are no changes.
- interface.reportFinished();
+ promise.finish();
} else {
keyOwner.setTrustedKeys(modifiedAuthenticatedKeys);
keyOwner.setDistrustedKeys(modifiedManuallyDistrustedKeys);
@@ -170,7 +170,7 @@ QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, con
}
auto future = makeTrustDecisions(encryption, keysBeingAuthenticated, keysBeingDistrusted);
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
// Send a trust message for all authenticated or distrusted
// keys to the own endpoints whose keys have been
// authenticated.
@@ -212,7 +212,7 @@ QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, con
}
}
- interface.reportFinished();
+ promise.finish();
});
} else {
// Send a trust message for the keys of the contact's endpoints
@@ -223,7 +223,7 @@ QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, con
}
auto future = makeTrustDecisions(encryption, keysBeingAuthenticated, keysBeingDistrusted);
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
// Send a trust message for own authenticated or distrusted
// keys to the contact's endpoints whose keys have been
// authenticated.
@@ -233,13 +233,13 @@ QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, con
sendTrustMessage(encryption, { ownKeyOwner }, keyOwnerJid);
}
- interface.reportFinished();
+ promise.finish();
});
}
}
});
- return interface.future();
+ return promise.task();
}
/// \cond
@@ -264,19 +264,20 @@ void QXmppAtmManager::handleMessageReceived(const QXmppMessage &message)
/// \param keyIdsForDistrusting key owners' bare JIDs mapped to the IDs of their
/// keys being distrusted
///
-QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIdsForAuthentication, const QMultiHash<QString, QByteArray> &keyIdsForDistrusting)
+QXmppTask<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIdsForAuthentication, const QMultiHash<QString, QByteArray> &keyIdsForDistrusting)
{
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
auto future = authenticate(encryption, keyIdsForAuthentication);
- await(future, this, [=]() mutable {
+
+ future.then(this, [=]() mutable {
auto future = distrust(encryption, keyIdsForDistrusting);
- await(future, this, [=]() mutable {
- interface.reportFinished();
+ future.then(this, [=]() mutable {
+ promise.finish();
});
});
- return interface.future();
+ return promise.task();
}
///
@@ -285,9 +286,9 @@ QFuture<void> QXmppAtmManager::makeTrustDecisions(const QString &encryption, con
///
/// \param message message that can contain a trust message element
///
-QFuture<void> QXmppAtmManager::handleMessage(const QXmppMessage &message)
+QXmppTask<void> QXmppAtmManager::handleMessage(const QXmppMessage &message)
{
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
if (const auto trustMessageElement = message.trustMessageElement();
trustMessageElement &&
@@ -299,7 +300,7 @@ QFuture<void> QXmppAtmManager::handleMessage(const QXmppMessage &message)
const auto encryption = trustMessageElement->encryption();
auto future = trustLevel(encryption, senderJid, senderKey);
- await(future, this, [=](const auto &&senderKeyTrustLevel) mutable {
+ future.then(this, [=](const auto &&senderKeyTrustLevel) mutable {
const auto isSenderKeyAuthenticated = senderKeyTrustLevel == TrustLevel::Authenticated;
// key owner JIDs mapped to key IDs
@@ -345,10 +346,10 @@ QFuture<void> QXmppAtmManager::handleMessage(const QXmppMessage &message)
}
auto future = trustStorage()->addKeysForPostponedTrustDecisions(encryption, senderKey, keyOwnersForPostponedTrustDecisions);
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
auto future = makeTrustDecisions(encryption, keysBeingAuthenticated, keysBeingDistrusted);
- await(future, this, [=]() mutable {
- interface.reportFinished();
+ future.then(this, [=]() mutable {
+ promise.finish();
});
});
});
@@ -357,10 +358,10 @@ QFuture<void> QXmppAtmManager::handleMessage(const QXmppMessage &message)
// 1. The message does not contain a trust message element.
// 2. The trust message is sent by this endpoint and reflected via
// Message Carbons.
- interface.reportFinished();
+ promise.finish();
}
- return interface.future();
+ return promise.task();
}
///
@@ -369,36 +370,36 @@ QFuture<void> QXmppAtmManager::handleMessage(const QXmppMessage &message)
/// \param encryption encryption protocol namespace
/// \param keyIds key owners' bare JIDs mapped to the IDs of their keys
///
-QFuture<void> QXmppAtmManager::authenticate(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds)
+QXmppTask<void> QXmppAtmManager::authenticate(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds)
{
if (keyIds.isEmpty()) {
- return makeReadyFuture();
+ return makeReadyTask();
}
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
auto future = setTrustLevel(encryption, keyIds, TrustLevel::Authenticated);
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
auto future = securityPolicy(encryption);
- await(future, this, [=](auto securityPolicy) mutable {
+ future.then(this, [=](auto securityPolicy) mutable {
if (securityPolicy == Toakafa) {
auto future = distrustAutomaticallyTrustedKeys(encryption, keyIds.uniqueKeys());
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
auto future = makePostponedTrustDecisions(encryption, keyIds.values());
- await(future, this, [=]() mutable {
- interface.reportFinished();
+ future.then(this, [=]() mutable {
+ promise.finish();
});
});
} else {
auto future = makePostponedTrustDecisions(encryption, keyIds.values());
- await(future, this, [=]() mutable {
- interface.reportFinished();
+ future.then(this, [=]() mutable {
+ promise.finish();
});
}
});
});
- return interface.future();
+ return promise.task();
}
///
@@ -407,23 +408,23 @@ QFuture<void> QXmppAtmManager::authenticate(const QString &encryption, const QMu
/// \param encryption encryption protocol namespace
/// \param keyIds key owners' bare JIDs mapped to the IDs of their keys
///
-QFuture<void> QXmppAtmManager::distrust(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds)
+QXmppTask<void> QXmppAtmManager::distrust(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds)
{
if (keyIds.isEmpty()) {
- return makeReadyFuture();
+ return makeReadyTask();
}
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
auto future = setTrustLevel(encryption, keyIds, TrustLevel::ManuallyDistrusted);
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
auto future = trustStorage()->removeKeysForPostponedTrustDecisions(encryption, keyIds.values());
- await(future, this, [=]() mutable {
- interface.reportFinished();
+ future.then(this, [=]() mutable {
+ promise.finish();
});
});
- return interface.future();
+ return promise.task();
}
///
@@ -433,7 +434,7 @@ QFuture<void> QXmppAtmManager::distrust(const QString &encryption, const QMultiH
/// \param encryption encryption protocol namespace
/// \param keyOwnerJids bare JIDs of the key owners
///
-QFuture<void> QXmppAtmManager::distrustAutomaticallyTrustedKeys(const QString &encryption, const QList<QString> &keyOwnerJids)
+QXmppTask<void> QXmppAtmManager::distrustAutomaticallyTrustedKeys(const QString &encryption, const QList<QString> &keyOwnerJids)
{
return setTrustLevel(encryption, keyOwnerJids, TrustLevel::AutomaticallyTrusted, TrustLevel::AutomaticallyDistrusted);
}
@@ -448,26 +449,26 @@ QFuture<void> QXmppAtmManager::distrustAutomaticallyTrustedKeys(const QString &e
/// \param encryption encryption protocol namespace
/// \param senderKeyIds IDs of the keys that were used by the senders
///
-QFuture<void> QXmppAtmManager::makePostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds)
+QXmppTask<void> QXmppAtmManager::makePostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds)
{
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
auto future = trustStorage()->keysForPostponedTrustDecisions(encryption, senderKeyIds);
- await(future, this, [=](const QHash<bool, QMultiHash<QString, QByteArray>> &&keysForPostponedTrustDecisions) mutable {
+ future.then(this, [=](const QHash<bool, QMultiHash<QString, QByteArray>> &&keysForPostponedTrustDecisions) mutable {
// JIDs of key owners mapped to the IDs of their keys
const auto keysBeingAuthenticated = keysForPostponedTrustDecisions.value(true);
const auto keysBeingDistrusted = keysForPostponedTrustDecisions.value(false);
auto future = trustStorage()->removeKeysForPostponedTrustDecisions(encryption, keysBeingAuthenticated.values(), keysBeingDistrusted.values());
- await(future, this, [=]() mutable {
+ future.then(this, [=]() mutable {
auto future = makeTrustDecisions(encryption, keysBeingAuthenticated, keysBeingDistrusted);
- await(future, this, [=]() mutable {
- interface.reportFinished();
+ future.then(this, [=]() mutable {
+ promise.finish();
});
});
});
- return interface.future();
+ return promise.task();
}
///
@@ -477,7 +478,7 @@ QFuture<void> QXmppAtmManager::makePostponedTrustDecisions(const QString &encryp
/// \param keyOwners key owners containing the data for authentication or distrusting
/// \param recipientJid JID of the recipient
///
-QFuture<QXmpp::SendResult> QXmppAtmManager::sendTrustMessage(const QString &encryption, const QList<QXmppTrustMessageKeyOwner> &keyOwners, const QString &recipientJid)
+QXmppTask<QXmpp::SendResult> QXmppAtmManager::sendTrustMessage(const QString &encryption, const QList<QXmppTrustMessageKeyOwner> &keyOwners, const QString &recipientJid)
{
QXmppTrustMessageElement trustMessageElement;
trustMessageElement.setUsage(ns_atm);
diff --git a/src/client/QXmppAtmManager.h b/src/client/QXmppAtmManager.h
index 9a0ab446..f1630ba4 100644
--- a/src/client/QXmppAtmManager.h
+++ b/src/client/QXmppAtmManager.h
@@ -11,6 +11,8 @@
class QXmppMessage;
class QXmppTrustMessageKeyOwner;
+template<typename T>
+class QXmppTask;
class QXMPP_EXPORT QXmppAtmManager : public QXmppTrustManager
{
@@ -18,7 +20,7 @@ class QXMPP_EXPORT QXmppAtmManager : public QXmppTrustManager
public:
QXmppAtmManager(QXmppAtmTrustStorage *trustStorage);
- QFuture<void> makeTrustDecisions(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting = {});
+ QXmppTask<void> makeTrustDecisions(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting = {});
protected:
/// \cond
@@ -28,16 +30,16 @@ private:
Q_SLOT void handleMessageReceived(const QXmppMessage &message);
/// \endcond
- QFuture<void> makeTrustDecisions(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIdsForAuthentication, const QMultiHash<QString, QByteArray> &keyIdsForDistrusting);
- QFuture<void> handleMessage(const QXmppMessage &message);
+ QXmppTask<void> makeTrustDecisions(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIdsForAuthentication, const QMultiHash<QString, QByteArray> &keyIdsForDistrusting);
+ QXmppTask<void> handleMessage(const QXmppMessage &message);
- QFuture<void> authenticate(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds);
- QFuture<void> distrust(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds);
+ QXmppTask<void> authenticate(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds);
+ QXmppTask<void> distrust(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds);
- QFuture<void> distrustAutomaticallyTrustedKeys(const QString &encryption, const QList<QString> &keyOwnerJids);
- QFuture<void> makePostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds);
+ QXmppTask<void> distrustAutomaticallyTrustedKeys(const QString &encryption, const QList<QString> &keyOwnerJids);
+ QXmppTask<void> makePostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds);
- QFuture<QXmpp::SendResult> sendTrustMessage(const QString &encryption, const QList<QXmppTrustMessageKeyOwner> &keyOwners, const QString &recipientJid);
+ QXmppTask<QXmpp::SendResult> sendTrustMessage(const QString &encryption, const QList<QXmppTrustMessageKeyOwner> &keyOwners, const QString &recipientJid);
/// \cond
inline QXmppAtmTrustStorage *trustStorage() const
diff --git a/src/client/QXmppAtmTrustMemoryStorage.cpp b/src/client/QXmppAtmTrustMemoryStorage.cpp
index eb8fe4df..04c8c747 100644
--- a/src/client/QXmppAtmTrustMemoryStorage.cpp
+++ b/src/client/QXmppAtmTrustMemoryStorage.cpp
@@ -49,7 +49,7 @@ QXmppAtmTrustMemoryStorage::QXmppAtmTrustMemoryStorage()
QXmppAtmTrustMemoryStorage::~QXmppAtmTrustMemoryStorage() = default;
/// \cond
-QFuture<void> QXmppAtmTrustMemoryStorage::addKeysForPostponedTrustDecisions(const QString &encryption, const QByteArray &senderKeyId, const QList<QXmppTrustMessageKeyOwner> &keyOwners)
+QXmppTask<void> QXmppAtmTrustMemoryStorage::addKeysForPostponedTrustDecisions(const QString &encryption, const QByteArray &senderKeyId, const QList<QXmppTrustMessageKeyOwner> &keyOwners)
{
const auto addKeys = [&](const QXmppTrustMessageKeyOwner &keyOwner, bool trust, const QList<QByteArray> &keyIds) {
for (const auto &keyId : keyIds) {
@@ -85,10 +85,10 @@ QFuture<void> QXmppAtmTrustMemoryStorage::addKeysForPostponedTrustDecisions(cons
addKeys(keyOwner, false, keyOwner.distrustedKeys());
}
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting)
+QXmppTask<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting)
{
for (auto itr = d->keys.find(encryption);
itr != d->keys.end() && itr.key() == encryption;) {
@@ -101,10 +101,10 @@ QFuture<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(c
}
}
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds)
+QXmppTask<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds)
{
for (auto itr = d->keys.find(encryption);
itr != d->keys.end() && itr.key() == encryption;) {
@@ -115,16 +115,16 @@ QFuture<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(c
}
}
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(const QString &encryption)
+QXmppTask<void> QXmppAtmTrustMemoryStorage::removeKeysForPostponedTrustDecisions(const QString &encryption)
{
d->keys.remove(encryption);
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<QHash<bool, QMultiHash<QString, QByteArray>>> QXmppAtmTrustMemoryStorage::keysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds)
+QXmppTask<QHash<bool, QMultiHash<QString, QByteArray>>> QXmppAtmTrustMemoryStorage::keysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds)
{
QHash<bool, QMultiHash<QString, QByteArray>> keys;
@@ -135,13 +135,13 @@ QFuture<QHash<bool, QMultiHash<QString, QByteArray>>> QXmppAtmTrustMemoryStorage
}
}
- return makeReadyFuture(std::move(keys));
+ return makeReadyTask(std::move(keys));
}
-QFuture<void> QXmppAtmTrustMemoryStorage::resetAll(const QString &encryption)
+QXmppTask<void> QXmppAtmTrustMemoryStorage::resetAll(const QString &encryption)
{
QXmppTrustMemoryStorage::resetAll(encryption);
d->keys.remove(encryption);
- return makeReadyFuture();
+ return makeReadyTask();
}
/// \endcond
diff --git a/src/client/QXmppAtmTrustMemoryStorage.h b/src/client/QXmppAtmTrustMemoryStorage.h
index 9d309e2a..cb1a481b 100644
--- a/src/client/QXmppAtmTrustMemoryStorage.h
+++ b/src/client/QXmppAtmTrustMemoryStorage.h
@@ -17,13 +17,13 @@ public:
~QXmppAtmTrustMemoryStorage();
/// \cond
- QFuture<void> addKeysForPostponedTrustDecisions(const QString &encryption, const QByteArray &senderKeyId, const QList<QXmppTrustMessageKeyOwner> &keyOwners) override;
- QFuture<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting) override;
- QFuture<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds) override;
- QFuture<void> removeKeysForPostponedTrustDecisions(const QString &encryption) override;
- QFuture<QHash<bool, QMultiHash<QString, QByteArray>>> keysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds = {}) override;
+ QXmppTask<void> addKeysForPostponedTrustDecisions(const QString &encryption, const QByteArray &senderKeyId, const QList<QXmppTrustMessageKeyOwner> &keyOwners) override;
+ QXmppTask<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting) override;
+ QXmppTask<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds) override;
+ QXmppTask<void> removeKeysForPostponedTrustDecisions(const QString &encryption) override;
+ QXmppTask<QHash<bool, QMultiHash<QString, QByteArray>>> keysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds = {}) override;
- QFuture<void> resetAll(const QString &encryption) override;
+ QXmppTask<void> resetAll(const QString &encryption) override;
/// \endcond
private:
diff --git a/src/client/QXmppAtmTrustStorage.h b/src/client/QXmppAtmTrustStorage.h
index e801c7df..f2618e94 100644
--- a/src/client/QXmppAtmTrustStorage.h
+++ b/src/client/QXmppAtmTrustStorage.h
@@ -7,6 +7,8 @@
#include "QXmppTrustStorage.h"
+#include <QList>
+
class QXmppTrustMessageKeyOwner;
class QXMPP_EXPORT QXmppAtmTrustStorage : virtual public QXmppTrustStorage
@@ -14,11 +16,11 @@ class QXMPP_EXPORT QXmppAtmTrustStorage : virtual public QXmppTrustStorage
public:
virtual ~QXmppAtmTrustStorage() = default;
- virtual QFuture<void> addKeysForPostponedTrustDecisions(const QString &encryption, const QByteArray &senderKeyId, const QList<QXmppTrustMessageKeyOwner> &keyOwners) = 0;
- virtual QFuture<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting) = 0;
- virtual QFuture<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds) = 0;
- virtual QFuture<void> removeKeysForPostponedTrustDecisions(const QString &encryption) = 0;
- virtual QFuture<QHash<bool, QMultiHash<QString, QByteArray>>> keysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds = {}) = 0;
+ virtual QXmppTask<void> addKeysForPostponedTrustDecisions(const QString &encryption, const QByteArray &senderKeyId, const QList<QXmppTrustMessageKeyOwner> &keyOwners) = 0;
+ virtual QXmppTask<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &keyIdsForAuthentication, const QList<QByteArray> &keyIdsForDistrusting) = 0;
+ virtual QXmppTask<void> removeKeysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds) = 0;
+ virtual QXmppTask<void> removeKeysForPostponedTrustDecisions(const QString &encryption) = 0;
+ virtual QXmppTask<QHash<bool, QMultiHash<QString, QByteArray>>> keysForPostponedTrustDecisions(const QString &encryption, const QList<QByteArray> &senderKeyIds = {}) = 0;
};
#endif // QXMPPATMTRUSTSTORAGE_H
diff --git a/src/client/QXmppCarbonManagerV2.cpp b/src/client/QXmppCarbonManagerV2.cpp
index 1c3a6fcc..0f48370e 100644
--- a/src/client/QXmppCarbonManagerV2.cpp
+++ b/src/client/QXmppCarbonManagerV2.cpp
@@ -163,7 +163,7 @@ void QXmppCarbonManagerV2::enableCarbons()
return;
}
- await(client()->sendIq(CarbonEnableIq()), this, [this](QXmppClient::IqResult domResult) {
+ client()->sendIq(CarbonEnableIq()).then(this, [this](QXmppClient::IqResult domResult) {
if (auto err = parseIq(std::move(domResult))) {
warning("Could not enable message carbons: " % err->description);
} else {
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp
index c0d7ee42..891de237 100644
--- a/src/client/QXmppClient.cpp
+++ b/src/client/QXmppClient.cpp
@@ -18,14 +18,15 @@
#include "QXmppMessageHandler.h"
#include "QXmppOutgoingClient.h"
#include "QXmppPacket_p.h"
+#include "QXmppPromise.h"
#include "QXmppRosterManager.h"
+#include "QXmppTask.h"
#include "QXmppTlsManager_p.h"
#include "QXmppUtils.h"
#include "QXmppVCardManager.h"
#include "QXmppVersionManager.h"
#include <QDomElement>
-#include <QFuture>
#include <QSslSocket>
#include <QTimer>
@@ -394,7 +395,7 @@ bool QXmppClient::sendPacket(const QXmppNonza &packet)
}
///
-/// Sends a packet and reports the result via QFuture.
+/// Sends a packet and reports the result via QXmppTask.
///
/// If stream management is enabled, the future continues to be active until the
/// server acknowledges the packet. On success, QXmpp::SendSuccess with
@@ -405,29 +406,26 @@ bool QXmppClient::sendPacket(const QXmppNonza &packet)
///
/// \warning THIS API IS NOT FINALIZED YET!
///
-/// \returns A QFuture that makes it possible to track the state of the packet.
-/// You can use QFutureWatcher in Qt 5 and QFuture::then() in Qt 6 to handle the
-/// results.
+/// \returns A QXmppTask that makes it possible to track the state of the packet.
///
/// \since QXmpp 1.5
///
-QFuture<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza, const std::optional<QXmppSendStanzaParams> &params)
+QXmppTask<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza, const std::optional<QXmppSendStanzaParams> &params)
{
- const auto sendEncrypted = [this](QFuture<MessageEncryptResult> &&future) {
- QFutureInterface<QXmpp::SendResult> interface(QFutureInterfaceBase::Started);
-
- await(future, this, [this, interface](MessageEncryptResult &&result) mutable {
+ const auto sendEncrypted = [this](QXmppTask<MessageEncryptResult> &&future) {
+ QXmppPromise<QXmpp::SendResult> interface;
+ future.then(this, [this, interface](MessageEncryptResult &&result) mutable {
if (const auto *xml = std::get_if<QByteArray>(&result)) {
auto future = d->stream->send(QXmppPacket(*xml, true, interface));
- await(future, this, [interface](QXmpp::SendResult &&result) mutable {
- reportFinishedResult(interface, result);
+ future.then(this, [interface](QXmpp::SendResult &&result) mutable {
+ interface.finish(std::move(result));
});
} else {
- reportFinishedResult(interface, { std::get<QXmppError>(result) });
+ interface.finish(std::get<QXmppError>(std::move(result)));
}
});
- return interface.future();
+ return interface.task();
};
if (d->encryptionExtension) {
@@ -452,13 +450,11 @@ QFuture<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza, const std::op
///
/// \warning THIS API IS NOT FINALIZED YET!
///
-/// \returns A QFuture that makes it possible to track the state of the packet.
-/// You can use QFutureWatcher in Qt 5 and QFuture::then() in Qt 6 to handle the
-/// results.
+/// \returns A QXmppTask that makes it possible to track the state of the packet.
///
/// \since QXmpp 1.5
///
-QFuture<QXmpp::SendResult> QXmppClient::sendUnencrypted(QXmppStanza &&stanza, const std::optional<QXmppSendStanzaParams> &)
+QXmppTask<QXmpp::SendResult> QXmppClient::sendUnencrypted(QXmppStanza &&stanza, const std::optional<QXmppSendStanzaParams> &)
{
return d->stream->send(stanza);
}
@@ -472,7 +468,7 @@ QFuture<QXmpp::SendResult> QXmppClient::sendUnencrypted(QXmppStanza &&stanza, co
///
/// \since QXmpp 1.5
///
-QFuture<QXmpp::SendResult> QXmppClient::reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata, const std::optional<QXmppSendStanzaParams> &params)
+QXmppTask<QXmpp::SendResult> QXmppClient::reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata, const std::optional<QXmppSendStanzaParams> &params)
{
// This should pick the right e2ee manager as soon as multiple encryptions
// in parallel are supported.
@@ -497,7 +493,7 @@ QFuture<QXmpp::SendResult> QXmppClient::reply(QXmppStanza &&stanza, const std::o
///
/// \since QXmpp 1.5
///
-QFuture<QXmppClient::IqResult> QXmppClient::sendIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &)
+QXmppTask<QXmppClient::IqResult> QXmppClient::sendIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &)
{
return d->stream->sendIq(std::move(iq));
}
@@ -515,57 +511,52 @@ QFuture<QXmppClient::IqResult> QXmppClient::sendIq(QXmppIq &&iq, const std::opti
///
/// \since QXmpp 1.5
///
-QFuture<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &params)
+QXmppTask<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &params)
{
- const auto sendEncrypted = [this](QFuture<IqEncryptResult> &&future, const QString &id, const QString &to) {
- QFutureInterface<IqResult> interface(QFutureInterfaceBase::Started);
- await(future, this, [this, interface, id, to](IqEncryptResult result) mutable {
+ const auto sendEncrypted = [this](QXmppTask<IqEncryptResult> &&future, const QString &id, const QString &to) {
+ QXmppPromise<IqResult> interface;
+ future.then(this, [this, interface, id, to](IqEncryptResult result) mutable {
if (const auto *xml = std::get_if<QByteArray>(&result)) {
// encrypted successfully
auto future = d->stream->QXmppStream::sendIq(QXmppPacket(*xml, true), id, to);
- await(future, this, [this, interface](QXmppStream::IqResult result) mutable {
+ future.then(this, [this, interface](QXmppStream::IqResult result) mutable {
if (const auto encryptedDom = std::get_if<QDomElement>(&result)) {
if (!isIqResponse(*encryptedDom)) {
QXmppError err {
QStringLiteral("Invalid IQ response received."),
QXmpp::SendError::EncryptionError
};
- interface.reportResult(err);
- interface.reportFinished();
+ interface.finish(std::move(err));
} else if (d->encryptionExtension) {
// try to decrypt the result (should be encrypted)
auto future = d->encryptionExtension->decryptIq(*encryptedDom);
- await(future, this, [interface, encryptedDom = *encryptedDom](IqDecryptResult result) mutable {
- if (const auto dom = std::get_if<QDomElement>(&result)) {
+ future.then(this, [interface, encryptedDom = *encryptedDom](IqDecryptResult result) mutable {
+ if (auto dom = std::get_if<QDomElement>(&result)) {
// decrypted result
- interface.reportResult(*dom);
+ interface.finish(std::move(*dom));
} else if (std::holds_alternative<QXmppE2eeExtension::NotEncrypted>(result)) {
// the IQ response from the other entity was not encrypted
// then report IQ response without modifications
- interface.reportResult(encryptedDom);
- } else if (const auto error = std::get_if<QXmppError>(&result)) {
- interface.reportResult(*error);
+ interface.finish(std::move(encryptedDom));
+ } else if (auto error = std::get_if<QXmppError>(&result)) {
+ interface.finish(std::move(*error));
}
- interface.reportFinished();
});
} else {
- interface.reportResult(QXmppError {
+ interface.finish(QXmppError {
QStringLiteral("No decryption extension found."),
QXmpp::SendError::EncryptionError });
- interface.reportFinished();
}
} else {
- interface.reportResult(std::get<QXmppError>(result));
- interface.reportFinished();
+ interface.finish(std::get<QXmppError>(result));
}
});
} else {
- interface.reportResult(std::get<QXmppError>(result));
- interface.reportFinished();
+ interface.finish(std::get<QXmppError>(result));
}
});
- return interface.future();
+ return interface.task();
};
if (iq.id().isEmpty() || d->stream->hasIqId(iq.id())) {
@@ -595,7 +586,7 @@ QFuture<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq, const
///
/// \since QXmpp 1.5
///
-QFuture<QXmppClient::EmptyResult> QXmppClient::sendGenericIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &)
+QXmppTask<QXmppClient::EmptyResult> QXmppClient::sendGenericIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &)
{
return chainIq(sendIq(std::move(iq)), this, [](const QXmppIq &) -> EmptyResult {
return QXmpp::Success();
diff --git a/src/client/QXmppClient.h b/src/client/QXmppClient.h
index e99937cb..5cef5fe3 100644
--- a/src/client/QXmppClient.h
+++ b/src/client/QXmppClient.h
@@ -19,7 +19,7 @@
#include <QSslError>
template<typename T>
-class QFuture;
+class QXmppTask;
class QXmppE2eeExtension;
class QXmppClientExtension;
@@ -219,12 +219,12 @@ public:
State state() const;
QXmppStanza::Error::Condition xmppStreamError();
- QFuture<QXmpp::SendResult> send(QXmppStanza &&, const std::optional<QXmppSendStanzaParams> & = {});
- QFuture<QXmpp::SendResult> sendUnencrypted(QXmppStanza &&, const std::optional<QXmppSendStanzaParams> & = {});
- QFuture<QXmpp::SendResult> reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata, const std::optional<QXmppSendStanzaParams> & = {});
- QFuture<IqResult> sendIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> & = {});
- QFuture<IqResult> sendSensitiveIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> & = {});
- QFuture<EmptyResult> sendGenericIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> & = {});
+ QXmppTask<QXmpp::SendResult> send(QXmppStanza &&, const std::optional<QXmppSendStanzaParams> & = {});
+ QXmppTask<QXmpp::SendResult> sendUnencrypted(QXmppStanza &&, const std::optional<QXmppSendStanzaParams> & = {});
+ QXmppTask<QXmpp::SendResult> reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata, const std::optional<QXmppSendStanzaParams> & = {});
+ QXmppTask<IqResult> sendIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> & = {});
+ QXmppTask<IqResult> sendSensitiveIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> & = {});
+ QXmppTask<EmptyResult> sendGenericIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> & = {});
#if QXMPP_DEPRECATED_SINCE(1, 1)
QT_DEPRECATED_X("Use QXmppClient::findExtension<QXmppRosterManager>() instead")
diff --git a/src/client/QXmppDiscoveryManager.cpp b/src/client/QXmppDiscoveryManager.cpp
index bdea6ede..2a104100 100644
--- a/src/client/QXmppDiscoveryManager.cpp
+++ b/src/client/QXmppDiscoveryManager.cpp
@@ -117,7 +117,7 @@ QString QXmppDiscoveryManager::requestItems(const QString &jid, const QString &n
///
/// \since QXmpp 1.5
///
-QFuture<QXmppDiscoveryManager::InfoResult> QXmppDiscoveryManager::requestDiscoInfo(const QString &jid, const QString &node)
+QXmppTask<QXmppDiscoveryManager::InfoResult> QXmppDiscoveryManager::requestDiscoInfo(const QString &jid, const QString &node)
{
QXmppDiscoveryIq request;
request.setType(QXmppIq::Get);
@@ -140,7 +140,7 @@ QFuture<QXmppDiscoveryManager::InfoResult> QXmppDiscoveryManager::requestDiscoIn
///
/// \since QXmpp 1.5
///
-QFuture<QXmppDiscoveryManager::ItemsResult> QXmppDiscoveryManager::requestDiscoItems(const QString &jid, const QString &node)
+QXmppTask<QXmppDiscoveryManager::ItemsResult> QXmppDiscoveryManager::requestDiscoItems(const QString &jid, const QString &node)
{
QXmppDiscoveryIq request;
request.setType(QXmppIq::Get);
diff --git a/src/client/QXmppDiscoveryManager.h b/src/client/QXmppDiscoveryManager.h
index bf18619e..56f6dfc4 100644
--- a/src/client/QXmppDiscoveryManager.h
+++ b/src/client/QXmppDiscoveryManager.h
@@ -10,7 +10,7 @@
#include <variant>
template<typename T>
-class QFuture;
+class QXmppTask;
class QXmppDataForm;
class QXmppDiscoveryIq;
class QXmppDiscoveryManagerPrivate;
@@ -35,8 +35,8 @@ public:
using InfoResult = std::variant<QXmppDiscoveryIq, QXmppStanza::Error>;
using ItemsResult = std::variant<QList<QXmppDiscoveryIq::Item>, QXmppStanza::Error>;
- QFuture<InfoResult> requestDiscoInfo(const QString &jid, const QString &node = {});
- QFuture<ItemsResult> requestDiscoItems(const QString &jid, const QString &node = {});
+ QXmppTask<InfoResult> requestDiscoInfo(const QString &jid, const QString &node = {});
+ QXmppTask<ItemsResult> requestDiscoItems(const QString &jid, const QString &node = {});
QString clientCapabilitiesNode() const;
void setClientCapabilitiesNode(const QString &);
diff --git a/src/client/QXmppE2eeExtension.h b/src/client/QXmppE2eeExtension.h
index f65fec45..af4afdde 100644
--- a/src/client/QXmppE2eeExtension.h
+++ b/src/client/QXmppE2eeExtension.h
@@ -16,7 +16,7 @@ class QDomElement;
class QXmppMessage;
class QXmppIq;
template<typename T>
-class QFuture;
+class QXmppTask;
class QXmppE2eeExtension : public QXmppExtension
{
@@ -30,10 +30,10 @@ public:
using IqEncryptResult = std::variant<QByteArray, QXmppError>;
using IqDecryptResult = std::variant<QDomElement, NotEncrypted, QXmppError>;
- virtual QFuture<MessageEncryptResult> encryptMessage(QXmppMessage &&, const std::optional<QXmppSendStanzaParams> &) = 0;
- virtual QFuture<MessageDecryptResult> decryptMessage(QXmppMessage &&) = 0;
- virtual QFuture<IqEncryptResult> encryptIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> &) = 0;
- virtual QFuture<IqDecryptResult> decryptIq(const QDomElement &) = 0;
+ virtual QXmppTask<MessageEncryptResult> encryptMessage(QXmppMessage &&, const std::optional<QXmppSendStanzaParams> &) = 0;
+ virtual QXmppTask<MessageDecryptResult> decryptMessage(QXmppMessage &&) = 0;
+ virtual QXmppTask<IqEncryptResult> encryptIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> &) = 0;
+ virtual QXmppTask<IqDecryptResult> decryptIq(const QDomElement &) = 0;
virtual bool isEncrypted(const QDomElement &) = 0;
virtual bool isEncrypted(const QXmppMessage &) = 0;
};
diff --git a/src/client/QXmppEntityTimeManager.cpp b/src/client/QXmppEntityTimeManager.cpp
index eb88fc0f..08089139 100644
--- a/src/client/QXmppEntityTimeManager.cpp
+++ b/src/client/QXmppEntityTimeManager.cpp
@@ -55,7 +55,7 @@ QString QXmppEntityTimeManager::requestTime(const QString &jid)
///
/// \since QXmpp 1.5
///
-auto QXmppEntityTimeManager::requestEntityTime(const QString &jid) -> QFuture<EntityTimeResult>
+auto QXmppEntityTimeManager::requestEntityTime(const QString &jid) -> QXmppTask<EntityTimeResult>
{
QXmppEntityTimeIq iq;
iq.setType(QXmppIq::Get);
diff --git a/src/client/QXmppEntityTimeManager.h b/src/client/QXmppEntityTimeManager.h
index a807caad..81c6fb45 100644
--- a/src/client/QXmppEntityTimeManager.h
+++ b/src/client/QXmppEntityTimeManager.h
@@ -10,7 +10,7 @@
#include <variant>
template<class T>
-class QFuture;
+class QXmppTask;
class QXmppEntityTimeIq;
///
@@ -27,7 +27,7 @@ public:
QString requestTime(const QString &jid);
using EntityTimeResult = std::variant<QXmppEntityTimeIq, QXmppStanza::Error>;
- QFuture<EntityTimeResult> requestEntityTime(const QString &jid);
+ QXmppTask<EntityTimeResult> requestEntityTime(const QString &jid);
/// \cond
QStringList discoveryFeatures() const override;
diff --git a/src/client/QXmppHttpUploadManager.cpp b/src/client/QXmppHttpUploadManager.cpp
index 2fe2994e..35eedf80 100644
--- a/src/client/QXmppHttpUploadManager.cpp
+++ b/src/client/QXmppHttpUploadManager.cpp
@@ -5,8 +5,8 @@
#include "QXmppHttpUploadManager.h"
#include "QXmppClient.h"
-#include "QXmppFutureUtils_p.h"
#include "QXmppHttpUploadIq.h"
+#include "QXmppTask.h"
#include "QXmppUploadRequestManager.h"
#include "QXmppUtils_p.h"
@@ -299,11 +299,8 @@ std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(std::unique_
}
auto future = client()->findExtension<QXmppUploadRequestManager>()->requestSlot(filename, fileSize, mimeType, uploadServiceJid);
-#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
- await(future, this, [this, upload, data = std::move(data)](SlotResult result) mutable {
-#else
- await(future, this, [this, upload, rawSourceDevice = data.release()](SlotResult result) mutable {
-#endif
+ // TODO: rawSourceDevice: could this lead to a memory leak if the "then lambda" is never executed?
+ future.then(this, [this, upload, rawSourceDevice = data.release()](SlotResult result) mutable {
// first check whether upload was cancelled in the meantime
if (upload->d->cancelled) {
upload->d->reportFinished();
@@ -331,11 +328,6 @@ std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(std::unique_
request.setRawHeader(itr.key().toUtf8(), itr.value().toUtf8());
}
-#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
- auto *rawSourceDevice = data.release();
-#else
- // already defined in lambda capture
-#endif
auto *reply = d->netManager->put(request, rawSourceDevice);
rawSourceDevice->setParent(reply);
upload->d->reply = reply;
diff --git a/src/client/QXmppIqHandling.h b/src/client/QXmppIqHandling.h
index e7db2b5d..530e214b 100644
--- a/src/client/QXmppIqHandling.h
+++ b/src/client/QXmppIqHandling.h
@@ -53,7 +53,7 @@ namespace Private {
const QString &requestId,
const QString &requestFrom,
const std::optional<QXmppE2eeMetadata> &e2eeMetadata,
- QFuture<T> future)
+ QXmppTask<T> future)
{
Private::await(future, client, [client, requestId, requestFrom, e2eeMetadata](T result) {
processHandleIqResult(client, requestId, requestFrom, e2eeMetadata, result);
@@ -162,7 +162,7 @@ namespace Private {
/// The return type of the handler function can be:
/// 1. an QXmppIq based type
/// 2. a std::variant of QXmppIq based types (multiple are possible) and optionally also QXmppStanza::Error
-/// 3. a QFuture of 1. or 2.
+/// 3. a QXmppTask of 1. or 2.
///
/// You don't need to set the values for id or the to address on the IQ result because that's done
/// automatically. Unless you want to return an error IQ you also don't need to set the IQ type.
@@ -254,7 +254,7 @@ bool handleIqRequests(const QDomElement &element,
/// The return type of the handler function can be:
/// 1. an QXmppIq based type
/// 2. a std::variant of QXmppIq based types (multiple are possible) and optionally also QXmppStanza::Error
-/// 3. a QFuture of 1. or 2.
+/// 3. a QXmppTask of 1. or 2.
///
/// You don't need to set the values for id or the to address on the IQ result because that's done
/// automatically. Unless you want to return an error IQ you also don't need to set the IQ type.
diff --git a/src/client/QXmppMamManager.cpp b/src/client/QXmppMamManager.cpp
index 125e9a48..f173aa01 100644
--- a/src/client/QXmppMamManager.cpp
+++ b/src/client/QXmppMamManager.cpp
@@ -17,24 +17,21 @@
#include <unordered_map>
#include <QDomElement>
-#include <QFuture>
-#include <QFutureInterface>
using namespace QXmpp::Private;
struct RetrieveRequestState
{
- QFutureInterface<QXmppMamManager::RetrieveResult> interface;
+ QXmppPromise<QXmppMamManager::RetrieveResult> promise;
QXmppMamResultIq iq;
QVector<QXmppMessage> messages;
- void reportFinished()
+ void finish()
{
- interface.reportResult(
+ promise.finish(
QXmppMamManager::RetrievedMessages {
std::move(iq),
std::move(messages) });
- interface.reportFinished();
}
};
@@ -89,7 +86,6 @@ QStringList QXmppMamManager::discoveryFeatures() const
bool QXmppMamManager::handleStanza(const QDomElement &element)
{
-
if (element.tagName() == "message") {
QDomElement resultElement = element.firstChildElement("result");
if (!resultElement.isNull() && resultElement.namespaceURI() == ns_mam) {
@@ -241,14 +237,14 @@ QString QXmppMamManager::retrieveArchivedMessages(const QString &to,
///
/// \since QXmpp 1.5
///
-QFuture<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(const QString &to, const QString &node, const QString &jid, const QDateTime &start, const QDateTime &end, const QXmppResultSetQuery &resultSetQuery)
+QXmppTask<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(const QString &to, const QString &node, const QString &jid, const QDateTime &start, const QDateTime &end, const QXmppResultSetQuery &resultSetQuery)
{
auto queryIq = buildRequest(to, node, jid, start, end, resultSetQuery);
auto [itr, _] = d->ongoingRequests.insert({ queryIq.queryId().toStdString(), RetrieveRequestState() });
// retrieve messages
- await(client()->sendIq(std::move(queryIq)), this, [this, queryId = queryIq.queryId()](QXmppClient::IqResult result) {
+ client()->sendIq(std::move(queryIq)).then(this, [this, queryId = queryIq.queryId()](QXmppClient::IqResult result) {
auto itr = d->ongoingRequests.find(queryId.toStdString());
if (itr == d->ongoingRequests.end()) {
return;
@@ -259,8 +255,7 @@ QFuture<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(const
iq.parse(std::get<QDomElement>(result));
if (iq.type() == QXmppIq::Error) {
- itr->second.interface.reportResult(QXmppError { iq.error().text(), iq.error() });
- itr->second.interface.reportFinished();
+ itr->second.promise.finish(QXmppError { iq.error().text(), iq.error() });
d->ongoingRequests.erase(itr);
return;
}
@@ -277,7 +272,7 @@ QFuture<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(const
auto message = messages.at(i);
(*running)++;
- await(e2eeExt->decryptMessage(std::move(message)), this, [this, i, running, queryId](auto result) {
+ e2eeExt->decryptMessage(std::move(message)).then(this, [this, i, running, queryId](auto result) {
(*running)--;
auto itr = d->ongoingRequests.find(queryId.toStdString());
if (itr == d->ongoingRequests.end()) {
@@ -290,21 +285,20 @@ QFuture<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(const
warning(QStringLiteral("Error decrypting message."));
}
if (*running == 0) {
- itr->second.reportFinished();
+ itr->second.finish();
d->ongoingRequests.erase(itr);
}
});
}
} else {
- itr->second.reportFinished();
+ itr->second.finish();
d->ongoingRequests.erase(itr);
}
} else {
- itr->second.interface.reportResult(std::get<QXmppError>(result));
- itr->second.interface.reportFinished();
+ itr->second.promise.finish(std::get<QXmppError>(result));
d->ongoingRequests.erase(itr);
}
});
- return itr->second.interface.future();
+ return itr->second.promise.task();
}
diff --git a/src/client/QXmppMamManager.h b/src/client/QXmppMamManager.h
index 579bfc74..71cb4311 100644
--- a/src/client/QXmppMamManager.h
+++ b/src/client/QXmppMamManager.h
@@ -15,7 +15,7 @@
#include <QDateTime>
template<typename T>
-class QFuture;
+class QXmppTask;
class QXmppMessage;
class QXmppMamManagerPrivate;
@@ -57,12 +57,12 @@ public:
const QDateTime &start = QDateTime(),
const QDateTime &end = QDateTime(),
const QXmppResultSetQuery &resultSetQuery = QXmppResultSetQuery());
- QFuture<RetrieveResult> retrieveMessages(const QString &to = QString(),
- const QString &node = QString(),
- const QString &jid = QString(),
- const QDateTime &start = QDateTime(),
- const QDateTime &end = QDateTime(),
- const QXmppResultSetQuery &resultSetQuery = QXmppResultSetQuery());
+ QXmppTask<RetrieveResult> retrieveMessages(const QString &to = QString(),
+ const QString &node = QString(),
+ const QString &jid = QString(),
+ const QDateTime &start = QDateTime(),
+ const QDateTime &end = QDateTime(),
+ const QXmppResultSetQuery &resultSetQuery = QXmppResultSetQuery());
/// \cond
QStringList discoveryFeatures() const override;
diff --git a/src/client/QXmppMessageReceiptManager.cpp b/src/client/QXmppMessageReceiptManager.cpp
index b464ed18..ae50bbd3 100644
--- a/src/client/QXmppMessageReceiptManager.cpp
+++ b/src/client/QXmppMessageReceiptManager.cpp
@@ -9,6 +9,7 @@
#include "QXmppConstants_p.h"
#include "QXmppE2eeMetadata.h"
#include "QXmppMessage.h"
+#include "QXmppTask.h"
#include "QXmppUtils.h"
#include <QDomElement>
diff --git a/src/client/QXmppOutgoingClient.cpp b/src/client/QXmppOutgoingClient.cpp
index 7a774f51..20e88b9c 100644
--- a/src/client/QXmppOutgoingClient.cpp
+++ b/src/client/QXmppOutgoingClient.cpp
@@ -15,6 +15,7 @@
#include "QXmppSasl_p.h"
#include "QXmppStreamFeatures.h"
#include "QXmppStreamManagement_p.h"
+#include "QXmppTask.h"
#include "QXmppUtils.h"
#include <QCryptographicHash>
@@ -325,7 +326,7 @@ bool QXmppOutgoingClient::isStreamResumed() const
///
/// \since QXmpp 1.5
///
-QFuture<QXmppStream::IqResult> QXmppOutgoingClient::sendIq(QXmppIq &&iq)
+QXmppTask<QXmppStream::IqResult> QXmppOutgoingClient::sendIq(QXmppIq &&iq)
{
// always set a to address (the QXmppStream needs this for matching)
if (iq.to().isEmpty()) {
diff --git a/src/client/QXmppOutgoingClient.h b/src/client/QXmppOutgoingClient.h
index 6c72d076..019275f8 100644
--- a/src/client/QXmppOutgoingClient.h
+++ b/src/client/QXmppOutgoingClient.h
@@ -38,7 +38,7 @@ public:
bool isClientStateIndicationEnabled() const;
bool isStreamManagementEnabled() const;
bool isStreamResumed() const;
- QFuture<IqResult> sendIq(QXmppIq &&);
+ QXmppTask<IqResult> sendIq(QXmppIq &&);
/// Returns the used socket
QSslSocket *socket() const { return QXmppStream::socket(); };
diff --git a/src/client/QXmppPep_p.h b/src/client/QXmppPep_p.h
index 6ffac236..aafc6520 100644
--- a/src/client/QXmppPep_p.h
+++ b/src/client/QXmppPep_p.h
@@ -12,7 +12,7 @@ using GetResult = std::variant<T, QXmppStanza::Error>;
using PublishResult = std::variant<QString, QXmppStanza::Error>;
template<typename ItemT>
-inline QFuture<GetResult<ItemT>> request(QXmppPubSubManager *pubSub, const QString &jid, const QString &nodeName, QObject *parent)
+inline QXmppTask<GetResult<ItemT>> request(QXmppPubSubManager *pubSub, const QString &jid, const QString &nodeName, QObject *parent)
{
using PubSub = QXmppPubSubManager;
using Error = QXmppStanza::Error;
diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp
index 1582c65e..a10fc25b 100644
--- a/src/client/QXmppPubSubManager.cpp
+++ b/src/client/QXmppPubSubManager.cpp
@@ -17,7 +17,6 @@
#include "QXmppUtils.h"
#include <QDomElement>
-#include <QFutureInterface>
using namespace QXmpp::Private;
@@ -211,7 +210,7 @@ QXmppPubSubManager::~QXmppPubSubManager()
/// \param serviceJid JID of the entity hosting the pubsub service
/// \param serviceType type of service to retrieve features for
///
-QFuture<QXmppPubSubManager::FeaturesResult> QXmppPubSubManager::requestFeatures(const QString &serviceJid, ServiceType serviceType)
+QXmppTask<QXmppPubSubManager::FeaturesResult> QXmppPubSubManager::requestFeatures(const QString &serviceJid, ServiceType serviceType)
{
QXmppDiscoveryIq request;
request.setType(QXmppIq::Get);
@@ -259,7 +258,7 @@ QFuture<QXmppPubSubManager::FeaturesResult> QXmppPubSubManager::requestFeatures(
/// \param jid Jabber ID of the entity hosting the pubsub service
/// \return
///
-QFuture<QXmppPubSubManager::NodesResult> QXmppPubSubManager::requestNodes(const QString &jid)
+QXmppTask<QXmppPubSubManager::NodesResult> QXmppPubSubManager::requestNodes(const QString &jid)
{
QXmppDiscoveryIq request;
request.setType(QXmppIq::Get);
@@ -293,7 +292,7 @@ QFuture<QXmppPubSubManager::NodesResult> QXmppPubSubManager::requestNodes(const
/// \param nodeName the name of the node to be created
/// \return
///
-auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName) -> QFuture<Result>
+auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName) -> QXmppTask<Result>
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -316,7 +315,7 @@ auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName)
/// \param config The configuration for the node
/// \return
///
-auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config) -> QFuture<Result>
+auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config) -> QXmppTask<Result>
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -337,7 +336,7 @@ auto QXmppPubSubManager::createNode(const QString &jid, const QString &nodeName,
/// \param jid Jabber ID of the entity hosting the pubsub service
/// \return
///
-QFuture<QXmppPubSubManager::InstantNodeResult> QXmppPubSubManager::createInstantNode(const QString &jid)
+QXmppTask<QXmppPubSubManager::InstantNodeResult> QXmppPubSubManager::createInstantNode(const QString &jid)
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -360,7 +359,7 @@ QFuture<QXmppPubSubManager::InstantNodeResult> QXmppPubSubManager::createInstant
/// \param config The configuration for the node
/// \return
///
-auto QXmppPubSubManager::createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config) -> QFuture<InstantNodeResult>
+auto QXmppPubSubManager::createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config) -> QXmppTask<InstantNodeResult>
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -381,7 +380,7 @@ auto QXmppPubSubManager::createInstantNode(const QString &jid, const QXmppPubSub
/// \param nodeName the name of the node to delete along with all of its items
/// \return
///
-auto QXmppPubSubManager::deleteNode(const QString &jid, const QString &nodeName) -> QFuture<Result>
+auto QXmppPubSubManager::deleteNode(const QString &jid, const QString &nodeName) -> QXmppTask<Result>
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -403,7 +402,7 @@ auto QXmppPubSubManager::deleteNode(const QString &jid, const QString &nodeName)
/// \param nodeName the name of the node whose items are requested
/// \return
///
-QFuture<QXmppPubSubManager::ItemIdsResult> QXmppPubSubManager::requestItemIds(const QString &serviceJid, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::ItemIdsResult> QXmppPubSubManager::requestItemIds(const QString &serviceJid, const QString &nodeName)
{
QXmppDiscoveryIq request;
request.setType(QXmppIq::Get);
@@ -430,7 +429,7 @@ QFuture<QXmppPubSubManager::ItemIdsResult> QXmppPubSubManager::requestItemIds(co
/// \param itemId the ID of the item to delete
/// \return
///
-auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName, const QString &itemId) -> QFuture<Result>
+auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName, const QString &itemId) -> QXmppTask<Result>
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -449,7 +448,7 @@ auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName
/// \param nodeName the name of the node to delete the item from
/// \param itemId the ID of the item to delete
///
-auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId) -> QFuture<Result>
+auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId) -> QXmppTask<Result>
{
return retractItem(jid, nodeName, standardItemIdToString(itemId));
}
@@ -462,7 +461,7 @@ auto QXmppPubSubManager::retractItem(const QString &jid, const QString &nodeName
/// items
/// \return
///
-auto QXmppPubSubManager::purgeItems(const QString &jid, const QString &nodeName) -> QFuture<Result>
+auto QXmppPubSubManager::purgeItems(const QString &jid, const QString &nodeName) -> QXmppTask<Result>
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -479,7 +478,7 @@ auto QXmppPubSubManager::purgeItems(const QString &jid, const QString &nodeName)
/// \param jid JID of the pubsub service
/// \return
///
-QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubscriptions(const QString &jid)
+QXmppTask<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubscriptions(const QString &jid)
{
return requestSubscriptions(jid, {});
}
@@ -491,7 +490,7 @@ QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubs
/// \param nodeName Name of the node on the pubsub service
/// \return
///
-QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubscriptions(const QString &jid, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubscriptions(const QString &jid, const QString &nodeName)
{
PubSubIq request;
request.setType(QXmppIq::Get);
@@ -515,7 +514,7 @@ QFuture<QXmppPubSubManager::SubscriptionsResult> QXmppPubSubManager::requestSubs
/// \param nodeName Name of the pubsub node on the service.
/// \return
///
-QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestNodeAffiliations(const QString &jid, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestNodeAffiliations(const QString &jid, const QString &nodeName)
{
PubSubIq request;
request.setType(QXmppIq::Get);
@@ -535,7 +534,7 @@ QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestNodeA
/// \param jid JID of the pubsub service
/// \return
///
-QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffiliations(const QString &jid)
+QXmppTask<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffiliations(const QString &jid)
{
return requestAffiliations(jid, {});
}
@@ -547,7 +546,7 @@ QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffil
/// \param nodeName Name of the pubsub node on the service.
/// \return
///
-QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffiliations(const QString &jid, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffiliations(const QString &jid, const QString &nodeName)
{
PubSubIq request;
request.setType(QXmppIq::Get);
@@ -568,7 +567,7 @@ QFuture<QXmppPubSubManager::AffiliationsResult> QXmppPubSubManager::requestAffil
/// \param nodeName Name of the pubsub node on the service.
/// \return
///
-QFuture<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeOptions(const QString &service, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeOptions(const QString &service, const QString &nodeName)
{
return requestSubscribeOptions(service, nodeName, client()->configuration().jidBare());
}
@@ -581,7 +580,7 @@ QFuture<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeO
/// \param subscriberJid JID of the user to request the options for
/// \return
///
-QFuture<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid)
+QXmppTask<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid)
{
PubSubIq request;
request.setType(QXmppIq::Get);
@@ -614,7 +613,7 @@ QFuture<QXmppPubSubManager::OptionsResult> QXmppPubSubManager::requestSubscribeO
/// \param options The new options to be set
/// \return
///
-QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options)
+QXmppTask<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options)
{
return setSubscribeOptions(service, nodeName, options, client()->configuration().jidBare());
}
@@ -628,7 +627,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(cons
/// \param subscriberJid The JID of the user
/// \return
///
-QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid)
+QXmppTask<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid)
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -654,7 +653,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::setSubscribeOptions(cons
/// \sa configureNode()
/// \sa cancelNodeConfiguration()
///
-QFuture<QXmppPubSubManager::NodeConfigResult> QXmppPubSubManager::requestNodeConfiguration(const QString &service, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::NodeConfigResult> QXmppPubSubManager::requestNodeConfiguration(const QString &service, const QString &nodeName)
{
using Error = QXmppStanza::Error;
@@ -689,7 +688,7 @@ QFuture<QXmppPubSubManager::NodeConfigResult> QXmppPubSubManager::requestNodeCon
///
/// \sa requestNodeConfiguration()
///
-QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config)
+QXmppTask<QXmppPubSubManager::Result> QXmppPubSubManager::configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config)
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -710,7 +709,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::configureNode(const QStr
///
/// \sa requestNodeConfiguration()
///
-QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::cancelNodeConfiguration(const QString &service, const QString &nodeName)
+QXmppTask<QXmppPubSubManager::Result> QXmppPubSubManager::cancelNodeConfiguration(const QString &service, const QString &nodeName)
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -730,7 +729,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::cancelNodeConfiguration(
/// \param nodeName name of the pubsub node being subscribed
/// \param subscriberJid bare or full JID of the subscriber
///
-QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
+QXmppTask<QXmppPubSubManager::Result> QXmppPubSubManager::subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -750,7 +749,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::subscribeToNode(const QS
/// \param nodeName name of the pubsub node being subscribed
/// \param subscriberJid bare or full JID of the subscriber
///
-QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
+QXmppTask<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
{
PubSubIq request;
request.setType(QXmppIq::Set);
@@ -785,7 +784,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(cons
///
///
-/// \fn QFuture<Result> QXmppPubSubManager::createOwnPepNode(const QString &nodeName)
+/// \fn QXmppTask<Result> QXmppPubSubManager::createOwnPepNode(const QString &nodeName)
///
/// Creates an empty PEP node with the default configuration.
///
@@ -801,7 +800,7 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(cons
///
///
-/// \fn QFuture<Result> QXmppPubSubManager::createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config)
+/// \fn QXmppTask<Result> QXmppPubSubManager::createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config)
///
/// Creates an empty PEP node with a custom configuration.
///
@@ -1024,7 +1023,7 @@ PubSubIq<> QXmppPubSubManager::requestItemsIq(const QString &jid, const QString
return request;
}
-auto QXmppPubSubManager::publishItem(PubSubIqBase &&request) -> QFuture<PublishItemResult>
+auto QXmppPubSubManager::publishItem(PubSubIqBase &&request) -> QXmppTask<PublishItemResult>
{
request.setType(QXmppIq::Set);
request.setQueryType(PubSubIqBase::Publish);
@@ -1039,7 +1038,7 @@ auto QXmppPubSubManager::publishItem(PubSubIqBase &&request) -> QFuture<PublishI
});
}
-auto QXmppPubSubManager::publishItems(PubSubIqBase &&request) -> QFuture<PublishItemsResult>
+auto QXmppPubSubManager::publishItems(PubSubIqBase &&request) -> QXmppTask<PublishItemsResult>
{
request.setType(QXmppIq::Set);
request.setQueryType(PubSubIqBase::Publish);
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 <QFuture>
-#include <QFutureWatcher>
-
class QXmppPubSubPublishOptions;
class QXmppPubSubSubscribeOptions;
@@ -75,73 +72,73 @@ public:
~QXmppPubSubManager();
// Generic PubSub (the PubSub service is the given entity)
- QFuture<NodesResult> requestNodes(const QString &jid);
- QFuture<Result> createNode(const QString &jid, const QString &nodeName);
- QFuture<Result> createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config);
- QFuture<InstantNodeResult> createInstantNode(const QString &jid);
- QFuture<InstantNodeResult> createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config);
- QFuture<Result> deleteNode(const QString &jid, const QString &nodeName);
- QFuture<ItemIdsResult> requestItemIds(const QString &serviceJid, const QString &nodeName);
+ QXmppTask<NodesResult> requestNodes(const QString &jid);
+ QXmppTask<Result> createNode(const QString &jid, const QString &nodeName);
+ QXmppTask<Result> createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config);
+ QXmppTask<InstantNodeResult> createInstantNode(const QString &jid);
+ QXmppTask<InstantNodeResult> createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config);
+ QXmppTask<Result> deleteNode(const QString &jid, const QString &nodeName);
+ QXmppTask<ItemIdsResult> requestItemIds(const QString &serviceJid, const QString &nodeName);
template<typename T = QXmppPubSubItem>
- QFuture<ItemResult<T>> requestItem(const QString &jid, const QString &nodeName, const QString &itemId);
+ QXmppTask<ItemResult<T>> requestItem(const QString &jid, const QString &nodeName, const QString &itemId);
template<typename T = QXmppPubSubItem>
- QFuture<ItemResult<T>> requestItem(const QString &jid, const QString &nodeName, StandardItemId itemId);
+ QXmppTask<ItemResult<T>> requestItem(const QString &jid, const QString &nodeName, StandardItemId itemId);
template<typename T = QXmppPubSubItem>
- QFuture<ItemsResult<T>> requestItems(const QString &jid, const QString &nodeName);
+ QXmppTask<ItemsResult<T>> requestItems(const QString &jid, const QString &nodeName);
template<typename T = QXmppPubSubItem>
- QFuture<ItemsResult<T>> requestItems(const QString &jid, const QString &nodeName, const QStringList &itemIds);
+ QXmppTask<ItemsResult<T>> requestItems(const QString &jid, const QString &nodeName, const QStringList &itemIds);
template<typename T>
- QFuture<PublishItemResult> publishItem(const QString &jid, const QString &nodeName, const T &item);
+ QXmppTask<PublishItemResult> publishItem(const QString &jid, const QString &nodeName, const T &item);
template<typename T>
- QFuture<PublishItemResult> publishItem(const QString &jid, const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions);
+ QXmppTask<PublishItemResult> publishItem(const QString &jid, const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions);
template<typename T>
- QFuture<PublishItemsResult> publishItems(const QString &jid, const QString &nodeName, const QVector<T> &items);
+ QXmppTask<PublishItemsResult> publishItems(const QString &jid, const QString &nodeName, const QVector<T> &items);
template<typename T>
- QFuture<PublishItemsResult> publishItems(const QString &jid, const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions);
- QFuture<Result> retractItem(const QString &jid, const QString &nodeName, const QString &itemId);
- QFuture<Result> retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId);
- QFuture<Result> purgeItems(const QString &jid, const QString &nodeName);
- QFuture<SubscriptionsResult> requestSubscriptions(const QString &jid);
- QFuture<SubscriptionsResult> requestSubscriptions(const QString &jid, const QString &nodeName);
- QFuture<AffiliationsResult> requestNodeAffiliations(const QString &jid, const QString &nodeName);
- QFuture<AffiliationsResult> requestAffiliations(const QString &jid);
- QFuture<AffiliationsResult> requestAffiliations(const QString &jid, const QString &nodeName);
- QFuture<OptionsResult> requestSubscribeOptions(const QString &service, const QString &nodeName);
- QFuture<OptionsResult> requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid);
- QFuture<Result> setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options);
- QFuture<Result> setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid);
- QFuture<NodeConfigResult> requestNodeConfiguration(const QString &service, const QString &nodeName);
- QFuture<Result> configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config);
- QFuture<Result> cancelNodeConfiguration(const QString &service, const QString &nodeName);
- QFuture<Result> subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
- QFuture<Result> unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
+ QXmppTask<PublishItemsResult> publishItems(const QString &jid, const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions);
+ QXmppTask<Result> retractItem(const QString &jid, const QString &nodeName, const QString &itemId);
+ QXmppTask<Result> retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId);
+ QXmppTask<Result> purgeItems(const QString &jid, const QString &nodeName);
+ QXmppTask<SubscriptionsResult> requestSubscriptions(const QString &jid);
+ QXmppTask<SubscriptionsResult> requestSubscriptions(const QString &jid, const QString &nodeName);
+ QXmppTask<AffiliationsResult> requestNodeAffiliations(const QString &jid, const QString &nodeName);
+ QXmppTask<AffiliationsResult> requestAffiliations(const QString &jid);
+ QXmppTask<AffiliationsResult> requestAffiliations(const QString &jid, const QString &nodeName);
+ QXmppTask<OptionsResult> requestSubscribeOptions(const QString &service, const QString &nodeName);
+ QXmppTask<OptionsResult> requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid);
+ QXmppTask<Result> setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options);
+ QXmppTask<Result> setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid);
+ QXmppTask<NodeConfigResult> requestNodeConfiguration(const QString &service, const QString &nodeName);
+ QXmppTask<Result> configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config);
+ QXmppTask<Result> cancelNodeConfiguration(const QString &service, const QString &nodeName);
+ QXmppTask<Result> subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
+ QXmppTask<Result> unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
// PEP-specific (the PubSub service is the current account)
- QFuture<NodesResult> requestOwnPepNodes() { return requestNodes(client()->configuration().jidBare()); };
- QFuture<Result> createOwnPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); }
- QFuture<Result> createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); }
- QFuture<Result> deleteOwnPepNode(const QString &nodeName) { return deleteNode(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<NodesResult> requestOwnPepNodes() { return requestNodes(client()->configuration().jidBare()); };
+ QXmppTask<Result> createOwnPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<Result> createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); }
+ QXmppTask<Result> deleteOwnPepNode(const QString &nodeName) { return deleteNode(client()->configuration().jidBare(), nodeName); }
template<typename T = QXmppPubSubItem>
- QFuture<ItemResult<T>> requestOwnPepItem(const QString &nodeName, const QString &itemId) { return requestItem<T>(client()->configuration().jidBare(), nodeName, itemId); }
+ QXmppTask<ItemResult<T>> requestOwnPepItem(const QString &nodeName, const QString &itemId) { return requestItem<T>(client()->configuration().jidBare(), nodeName, itemId); }
template<typename T = QXmppPubSubItem>
- QFuture<ItemResult<T>> requestOwnPepItem(const QString &nodeName, StandardItemId itemId) { return requestItem<T>(client()->configuration().jidBare(), nodeName, itemId); }
+ QXmppTask<ItemResult<T>> requestOwnPepItem(const QString &nodeName, StandardItemId itemId) { return requestItem<T>(client()->configuration().jidBare(), nodeName, itemId); }
template<typename T = QXmppPubSubItem>
- QFuture<ItemsResult<T>> requestOwnPepItems(const QString &nodeName) { return requestItems(client()->configuration().jidBare(), nodeName); }
- QFuture<ItemIdsResult> requestOwnPepItemIds(const QString &nodeName) { return requestItemIds(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<ItemsResult<T>> requestOwnPepItems(const QString &nodeName) { return requestItems(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<ItemIdsResult> requestOwnPepItemIds(const QString &nodeName) { return requestItemIds(client()->configuration().jidBare(), nodeName); }
template<typename T>
- QFuture<PublishItemResult> publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions);
+ QXmppTask<PublishItemResult> publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions);
template<typename T>
- QFuture<PublishItemResult> publishOwnPepItem(const QString &nodeName, const T &item);
+ QXmppTask<PublishItemResult> publishOwnPepItem(const QString &nodeName, const T &item);
template<typename T>
- QFuture<PublishItemsResult> publishOwnPepItems(const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions);
+ QXmppTask<PublishItemsResult> publishOwnPepItems(const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions);
template<typename T>
- QFuture<PublishItemsResult> publishOwnPepItems(const QString &nodeName, const QVector<T> &items);
- QFuture<Result> retractOwnPepItem(const QString &nodeName, const QString &itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); }
- QFuture<Result> retractOwnPepItem(const QString &nodeName, StandardItemId itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); }
- QFuture<Result> purgeOwnPepItems(const QString &nodeName) { return purgeItems(client()->configuration().jidBare(), nodeName); }
- QFuture<NodeConfigResult> requestOwnPepNodeConfiguration(const QString &nodeName) { return requestNodeConfiguration(client()->configuration().jidBare(), nodeName); }
- QFuture<Result> configureOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return configureNode(client()->configuration().jidBare(), nodeName, config); }
- QFuture<Result> cancelOwnPepNodeConfiguration(const QString &nodeName) { return cancelNodeConfiguration(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<PublishItemsResult> publishOwnPepItems(const QString &nodeName, const QVector<T> &items);
+ QXmppTask<Result> retractOwnPepItem(const QString &nodeName, const QString &itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); }
+ QXmppTask<Result> retractOwnPepItem(const QString &nodeName, StandardItemId itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); }
+ QXmppTask<Result> purgeOwnPepItems(const QString &nodeName) { return purgeItems(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<NodeConfigResult> requestOwnPepNodeConfiguration(const QString &nodeName) { return requestNodeConfiguration(client()->configuration().jidBare(), nodeName); }
+ QXmppTask<Result> configureOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return configureNode(client()->configuration().jidBare(), nodeName, config); }
+ QXmppTask<Result> 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<FeaturesResult> requestFeatures(const QString &serviceJid, ServiceType serviceType = PubSubOrPep);
- QFuture<FeaturesResult> requestOwnPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); };
+ QXmppTask<FeaturesResult> requestFeatures(const QString &serviceJid, ServiceType serviceType = PubSubOrPep);
+ QXmppTask<FeaturesResult> requestOwnPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); };
- QFuture<PublishItemResult> publishItem(QXmpp::Private::PubSubIqBase &&iq);
- QFuture<PublishItemsResult> publishItems(QXmpp::Private::PubSubIqBase &&iq);
+ QXmppTask<PublishItemResult> publishItem(QXmpp::Private::PubSubIqBase &&iq);
+ QXmppTask<PublishItemsResult> 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<typename T>
-QFuture<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const QString &jid,
- const QString &nodeName,
- const QString &itemId)
+QXmppTask<QXmppPubSubManager::ItemResult<T>> 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::ItemResult<T>> QXmppPubSubManager::requestItem(const
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const QString &jid,
- const QString &nodeName,
- StandardItemId itemId)
+QXmppTask<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const QString &jid,
+ const QString &nodeName,
+ StandardItemId itemId)
{
return requestItem<T>(jid, nodeName, standardItemIdToString(itemId));
}
@@ -214,8 +211,8 @@ QFuture<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(const QString &jid,
- const QString &nodeName)
+QXmppTask<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(const QString &jid,
+ const QString &nodeName)
{
return requestItems<T>(jid, nodeName, {});
}
@@ -231,9 +228,9 @@ QFuture<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(con
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(const QString &jid,
- const QString &nodeName,
- const QStringList &itemIds)
+QXmppTask<QXmppPubSubManager::ItemsResult<T>> 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::ItemsResult<T>> QXmppPubSubManager::requestItems(con
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(const QString &jid,
- const QString &nodeName,
- const T &item)
+QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(const QString &jid,
+ const QString &nodeName,
+ const T &item)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
@@ -281,10 +278,10 @@ QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(c
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(const QString &jid,
- const QString &nodeName,
- const T &item,
- const QXmppPubSubPublishOptions &publishOptions)
+QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(const QString &jid,
+ const QString &nodeName,
+ const T &item,
+ const QXmppPubSubPublishOptions &publishOptions)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
@@ -303,9 +300,9 @@ QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(c
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems(const QString &jid,
- const QString &nodeName,
- const QVector<T> &items)
+QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems(const QString &jid,
+ const QString &nodeName,
+ const QVector<T> &items)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
@@ -324,10 +321,10 @@ QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems(const QString &jid,
- const QString &nodeName,
- const QVector<T> &items,
- const QXmppPubSubPublishOptions &publishOptions)
+QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems(const QString &jid,
+ const QString &nodeName,
+ const QVector<T> &items,
+ const QXmppPubSubPublishOptions &publishOptions)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
@@ -346,7 +343,7 @@ QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions)
+QXmppTask<QXmppPubSubManager::PublishItemResult> 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::PublishItemResult> QXmppPubSubManager::publishOwnPep
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item)
+QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item)
{
return publishItem(client()->configuration().jidBare(), nodeName, item);
}
@@ -374,7 +371,7 @@ QFuture<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishOwnPep
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions)
+QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions)
{
return publishItems(client()->configuration().jidBare(), nodeName, items, publishOptions);
}
@@ -387,7 +384,7 @@ QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPe
/// \return
///
template<typename T>
-QFuture<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector<T> &items)
+QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector<T> &items)
{
return publishItems(client()->configuration().jidBare(), nodeName, items);
}
diff --git a/src/client/QXmppRosterManager.cpp b/src/client/QXmppRosterManager.cpp
index 810a4615..87ebbd26 100644
--- a/src/client/QXmppRosterManager.cpp
+++ b/src/client/QXmppRosterManager.cpp
@@ -256,7 +256,7 @@ void QXmppRosterManager::_q_presenceReceived(const QXmppPresence &presence)
///
/// \since QXmpp 1.5
///
-QFuture<QXmppRosterManager::Result> QXmppRosterManager::addRosterItem(const QString &bareJid, const QString &name, const QSet<QString> &groups)
+QXmppTask<QXmppRosterManager::Result> QXmppRosterManager::addRosterItem(const QString &bareJid, const QString &name, const QSet<QString> &groups)
{
QXmppRosterIq::Item item;
item.setBareJid(bareJid);
@@ -280,7 +280,7 @@ QFuture<QXmppRosterManager::Result> QXmppRosterManager::addRosterItem(const QStr
///
/// \since QXmpp 1.5
///
-QFuture<QXmppRosterManager::Result> QXmppRosterManager::removeRosterItem(const QString &bareJid)
+QXmppTask<QXmppRosterManager::Result> QXmppRosterManager::removeRosterItem(const QString &bareJid)
{
QXmppRosterIq::Item item;
item.setBareJid(bareJid);
@@ -303,11 +303,11 @@ QFuture<QXmppRosterManager::Result> QXmppRosterManager::removeRosterItem(const Q
///
/// \since QXmpp 1.5
///
-QFuture<QXmppRosterManager::Result> QXmppRosterManager::renameRosterItem(const QString &bareJid, const QString &name)
+QXmppTask<QXmppRosterManager::Result> QXmppRosterManager::renameRosterItem(const QString &bareJid, const QString &name)
{
using Error = QXmppStanza::Error;
if (!d->entries.contains(bareJid)) {
- return QXmpp::Private::makeReadyFuture<Result>(
+ return QXmpp::Private::makeReadyTask<Result>(
Error(Error::Modify, Error::ItemNotFound,
QStringLiteral("The roster doesn't contain this user.")));
}
@@ -334,7 +334,7 @@ QFuture<QXmppRosterManager::Result> QXmppRosterManager::renameRosterItem(const Q
///
/// \since QXmpp 1.5
///
-QFuture<QXmpp::SendResult> QXmppRosterManager::subscribeTo(const QString &bareJid, const QString &reason)
+QXmppTask<QXmpp::SendResult> QXmppRosterManager::subscribeTo(const QString &bareJid, const QString &reason)
{
QXmppPresence packet;
packet.setTo(QXmppUtils::jidToBareJid(bareJid));
@@ -351,7 +351,7 @@ QFuture<QXmpp::SendResult> QXmppRosterManager::subscribeTo(const QString &bareJi
///
/// \since QXmpp 1.5
///
-QFuture<QXmpp::SendResult> QXmppRosterManager::unsubscribeFrom(const QString &bareJid, const QString &reason)
+QXmppTask<QXmpp::SendResult> QXmppRosterManager::unsubscribeFrom(const QString &bareJid, const QString &reason)
{
QXmppPresence packet;
packet.setTo(QXmppUtils::jidToBareJid(bareJid));
@@ -375,13 +375,13 @@ bool QXmppRosterManager::refuseSubscription(const QString &bareJid, const QStrin
}
///
-/// Adds a new item to the roster without sending any subscription requests.
+/// Adds a new item the roster without sending any subscription requests.
///
/// As a result, the server will initiate a roster push, causing the
/// itemAdded() or itemChanged() signal to be emitted.
///
/// \param bareJid
-/// \param name Optional name for the item.
+/// \param name Optotional name for the item.
/// \param groups Optional groups for the item.
///
bool QXmppRosterManager::addItem(const QString &bareJid, const QString &name, const QSet<QString> &groups)
diff --git a/src/client/QXmppRosterManager.h b/src/client/QXmppRosterManager.h
index be4f45d6..f3629342 100644
--- a/src/client/QXmppRosterManager.h
+++ b/src/client/QXmppRosterManager.h
@@ -19,7 +19,7 @@
#include <QStringList>
template<typename T>
-class QFuture;
+class QXmppTask;
class QXmppRosterManagerPrivate;
///
@@ -73,11 +73,11 @@ public:
QXmppPresence getPresence(const QString &bareJid,
const QString &resource) const;
- QFuture<Result> addRosterItem(const QString &bareJid, const QString &name = {}, const QSet<QString> &groups = {});
- QFuture<Result> removeRosterItem(const QString &bareJid);
- QFuture<Result> renameRosterItem(const QString &bareJid, const QString &name);
- QFuture<QXmpp::SendResult> subscribeTo(const QString &bareJid, const QString &reason = {});
- QFuture<QXmpp::SendResult> unsubscribeFrom(const QString &bareJid, const QString &reason = {});
+ QXmppTask<Result> addRosterItem(const QString &bareJid, const QString &name = {}, const QSet<QString> &groups = {});
+ QXmppTask<Result> removeRosterItem(const QString &bareJid);
+ QXmppTask<Result> renameRosterItem(const QString &bareJid, const QString &name);
+ QXmppTask<QXmpp::SendResult> subscribeTo(const QString &bareJid, const QString &reason = {});
+ QXmppTask<QXmpp::SendResult> unsubscribeFrom(const QString &bareJid, const QString &reason = {});
/// \cond
bool handleStanza(const QDomElement &element) override;
diff --git a/src/client/QXmppTrustManager.cpp b/src/client/QXmppTrustManager.cpp
index a5031a52..2772a4a5 100644
--- a/src/client/QXmppTrustManager.cpp
+++ b/src/client/QXmppTrustManager.cpp
@@ -5,6 +5,8 @@
#include "QXmppTrustManager.h"
#include "QXmppFutureUtils_p.h"
+#include "QXmppPromise.h"
+#include "QXmppTask.h"
#include "QXmppTrustStorage.h"
using namespace QXmpp;
@@ -40,7 +42,7 @@ QXmppTrustManager::~QXmppTrustManager() = default;
/// \param encryption encryption protocol namespace
/// \param securityPolicy security policy being applied
///
-QFuture<void> QXmppTrustManager::setSecurityPolicy(const QString &encryption, TrustSecurityPolicy securityPolicy)
+QXmppTask<void> QXmppTrustManager::setSecurityPolicy(const QString &encryption, TrustSecurityPolicy securityPolicy)
{
return m_trustStorage->setSecurityPolicy(encryption, securityPolicy);
}
@@ -50,7 +52,7 @@ QFuture<void> QXmppTrustManager::setSecurityPolicy(const QString &encryption, Tr
///
/// \param encryption encryption protocol namespace
///
-QFuture<void> QXmppTrustManager::resetSecurityPolicy(const QString &encryption)
+QXmppTask<void> QXmppTrustManager::resetSecurityPolicy(const QString &encryption)
{
return m_trustStorage->resetSecurityPolicy(encryption);
}
@@ -62,7 +64,7 @@ QFuture<void> QXmppTrustManager::resetSecurityPolicy(const QString &encryption)
///
/// \return the set security policy
///
-QFuture<TrustSecurityPolicy> QXmppTrustManager::securityPolicy(const QString &encryption)
+QXmppTask<TrustSecurityPolicy> QXmppTrustManager::securityPolicy(const QString &encryption)
{
return m_trustStorage->securityPolicy(encryption);
}
@@ -74,7 +76,7 @@ QFuture<TrustSecurityPolicy> QXmppTrustManager::securityPolicy(const QString &en
/// \param encryption encryption protocol namespace
/// \param keyId ID of the key
///
-QFuture<void> QXmppTrustManager::setOwnKey(const QString &encryption, const QByteArray &keyId)
+QXmppTask<void> QXmppTrustManager::setOwnKey(const QString &encryption, const QByteArray &keyId)
{
return m_trustStorage->setOwnKey(encryption, keyId);
}
@@ -85,7 +87,7 @@ QFuture<void> QXmppTrustManager::setOwnKey(const QString &encryption, const QByt
///
/// \param encryption encryption protocol namespace
///
-QFuture<void> QXmppTrustManager::resetOwnKey(const QString &encryption)
+QXmppTask<void> QXmppTrustManager::resetOwnKey(const QString &encryption)
{
return m_trustStorage->resetOwnKey(encryption);
}
@@ -98,7 +100,7 @@ QFuture<void> QXmppTrustManager::resetOwnKey(const QString &encryption)
///
/// \return the ID of the own key
///
-QFuture<QByteArray> QXmppTrustManager::ownKey(const QString &encryption)
+QXmppTask<QByteArray> QXmppTrustManager::ownKey(const QString &encryption)
{
return m_trustStorage->ownKey(encryption);
}
@@ -111,7 +113,7 @@ QFuture<QByteArray> QXmppTrustManager::ownKey(const QString &encryption)
/// \param keyIds IDs of the keys
/// \param trustLevel trust level of the keys
///
-QFuture<void> QXmppTrustManager::addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, TrustLevel trustLevel)
+QXmppTask<void> QXmppTrustManager::addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, TrustLevel trustLevel)
{
return m_trustStorage->addKeys(encryption, keyOwnerJid, keyIds, trustLevel);
}
@@ -122,7 +124,7 @@ QFuture<void> QXmppTrustManager::addKeys(const QString &encryption, const QStrin
/// \param encryption encryption protocol namespace
/// \param keyIds IDs of the keys
///
-QFuture<void> QXmppTrustManager::removeKeys(const QString &encryption, const QList<QByteArray> &keyIds)
+QXmppTask<void> QXmppTrustManager::removeKeys(const QString &encryption, const QList<QByteArray> &keyIds)
{
return m_trustStorage->removeKeys(encryption, keyIds);
}
@@ -133,7 +135,7 @@ QFuture<void> QXmppTrustManager::removeKeys(const QString &encryption, const QLi
/// \param encryption encryption protocol namespace
/// \param keyOwnerJid key owner's bare JID
///
-QFuture<void> QXmppTrustManager::removeKeys(const QString &encryption, const QString &keyOwnerJid)
+QXmppTask<void> QXmppTrustManager::removeKeys(const QString &encryption, const QString &keyOwnerJid)
{
return m_trustStorage->removeKeys(encryption, keyOwnerJid);
}
@@ -143,7 +145,7 @@ QFuture<void> QXmppTrustManager::removeKeys(const QString &encryption, const QSt
///
/// \param encryption encryption protocol namespace
///
-QFuture<void> QXmppTrustManager::removeKeys(const QString &encryption)
+QXmppTask<void> QXmppTrustManager::removeKeys(const QString &encryption)
{
return m_trustStorage->removeKeys(encryption);
}
@@ -159,7 +161,7 @@ QFuture<void> QXmppTrustManager::removeKeys(const QString &encryption)
///
/// \return the key owner JIDs mapped to their keys with specific trust levels
///
-QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> QXmppTrustManager::keys(const QString &encryption, QXmpp::TrustLevels trustLevels)
+QXmppTask<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> QXmppTrustManager::keys(const QString &encryption, QXmpp::TrustLevels trustLevels)
{
return m_trustStorage->keys(encryption, trustLevels);
}
@@ -177,7 +179,7 @@ QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> QXmppTrustMan
///
/// \return the key IDs mapped to their trust levels for specific key owners
///
-QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> QXmppTrustManager::keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels)
+QXmppTask<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> QXmppTrustManager::keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels)
{
return m_trustStorage->keys(encryption, keyOwnerJids, trustLevels);
}
@@ -192,7 +194,7 @@ QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> QXmppTrustManager:
///
/// \return whether a key of the key owner with a passed trust level is stored
///
-QFuture<bool> QXmppTrustManager::hasKey(const QString &encryption, const QString &keyOwnerJid, TrustLevels trustLevels)
+QXmppTask<bool> QXmppTrustManager::hasKey(const QString &encryption, const QString &keyOwnerJid, TrustLevels trustLevels)
{
return m_trustStorage->hasKey(encryption, keyOwnerJid, trustLevels);
}
@@ -206,17 +208,17 @@ QFuture<bool> QXmppTrustManager::hasKey(const QString &encryption, const QString
/// \param keyIds key owners' bare JIDs mapped to the IDs of their keys
/// \param trustLevel trust level being set
///
-QFuture<void> QXmppTrustManager::setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, TrustLevel trustLevel)
+QXmppTask<void> QXmppTrustManager::setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, TrustLevel trustLevel)
{
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
auto future = m_trustStorage->setTrustLevel(encryption, keyIds, trustLevel);
- await(future, this, [=](QHash<QString, QMultiHash<QString, QByteArray>> modifiedKeys) mutable {
+ future.then(this, [=](QHash<QString, QMultiHash<QString, QByteArray>> modifiedKeys) mutable {
Q_EMIT trustLevelsChanged(modifiedKeys);
- interface.reportFinished();
+ promise.finish();
});
- return interface.future();
+ return promise.task();
}
///
@@ -227,17 +229,16 @@ QFuture<void> QXmppTrustManager::setTrustLevel(const QString &encryption, const
/// \param oldTrustLevel trust level being changed
/// \param newTrustLevel trust level being set
///
-QFuture<void> QXmppTrustManager::setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, TrustLevel oldTrustLevel, TrustLevel newTrustLevel)
+QXmppTask<void> QXmppTrustManager::setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, TrustLevel oldTrustLevel, TrustLevel newTrustLevel)
{
- QFutureInterface<void> interface(QFutureInterfaceBase::Started);
+ QXmppPromise<void> promise;
+ m_trustStorage->setTrustLevel(encryption, keyOwnerJids, oldTrustLevel, newTrustLevel)
+ .then(this, [=](QHash<QString, QMultiHash<QString, QByteArray>> modifiedKeys) mutable {
+ Q_EMIT trustLevelsChanged(modifiedKeys);
+ promise.finish();
+ });
- auto future = m_trustStorage->setTrustLevel(encryption, keyOwnerJids, oldTrustLevel, newTrustLevel);
- await(future, this, [=](QHash<QString, QMultiHash<QString, QByteArray>> modifiedKeys) mutable {
- Q_EMIT trustLevelsChanged(modifiedKeys);
- interface.reportFinished();
- });
-
- return interface.future();
+ return promise.task();
}
///
@@ -251,7 +252,7 @@ QFuture<void> QXmppTrustManager::setTrustLevel(const QString &encryption, const
///
/// \return the key's trust level
///
-QFuture<TrustLevel> QXmppTrustManager::trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId)
+QXmppTask<TrustLevel> QXmppTrustManager::trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId)
{
return m_trustStorage->trustLevel(encryption, keyOwnerJid, keyId);
}
@@ -261,7 +262,7 @@ QFuture<TrustLevel> QXmppTrustManager::trustLevel(const QString &encryption, con
///
/// \param encryption encryption protocol namespace
///
-QFuture<void> QXmppTrustManager::resetAll(const QString &encryption)
+QXmppTask<void> QXmppTrustManager::resetAll(const QString &encryption)
{
return m_trustStorage->resetAll(encryption);
}
diff --git a/src/client/QXmppTrustManager.h b/src/client/QXmppTrustManager.h
index 456a2036..d9fc8f23 100644
--- a/src/client/QXmppTrustManager.h
+++ b/src/client/QXmppTrustManager.h
@@ -9,7 +9,8 @@
#include "QXmppTrustLevel.h"
#include "QXmppTrustSecurityPolicy.h"
-#include <QFuture>
+template<typename T>
+class QXmppTask;
class QXmppTrustStorage;
@@ -21,27 +22,27 @@ public:
QXmppTrustManager(QXmppTrustStorage *trustStorage);
~QXmppTrustManager();
- QFuture<void> setSecurityPolicy(const QString &encryption, QXmpp::TrustSecurityPolicy securityPolicy);
- QFuture<void> resetSecurityPolicy(const QString &encryption);
- QFuture<QXmpp::TrustSecurityPolicy> securityPolicy(const QString &encryption);
+ QXmppTask<void> setSecurityPolicy(const QString &encryption, QXmpp::TrustSecurityPolicy securityPolicy);
+ QXmppTask<void> resetSecurityPolicy(const QString &encryption);
+ QXmppTask<QXmpp::TrustSecurityPolicy> securityPolicy(const QString &encryption);
- QFuture<void> setOwnKey(const QString &encryption, const QByteArray &keyId);
- QFuture<void> resetOwnKey(const QString &encryption);
- QFuture<QByteArray> ownKey(const QString &encryption);
+ QXmppTask<void> setOwnKey(const QString &encryption, const QByteArray &keyId);
+ QXmppTask<void> resetOwnKey(const QString &encryption);
+ QXmppTask<QByteArray> ownKey(const QString &encryption);
- QFuture<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmpp::TrustLevel trustLevel = QXmpp::TrustLevel::AutomaticallyDistrusted);
- QFuture<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds);
- QFuture<void> removeKeys(const QString &encryption, const QString &keyOwnerJid);
- QFuture<void> removeKeys(const QString &encryption);
- QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmpp::TrustLevels trustLevels = {});
- QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels = {});
- QFuture<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmpp::TrustLevels trustLevels);
+ QXmppTask<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmpp::TrustLevel trustLevel = QXmpp::TrustLevel::AutomaticallyDistrusted);
+ QXmppTask<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds);
+ QXmppTask<void> removeKeys(const QString &encryption, const QString &keyOwnerJid);
+ QXmppTask<void> removeKeys(const QString &encryption);
+ QXmppTask<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmpp::TrustLevels trustLevels = {});
+ QXmppTask<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels = {});
+ QXmppTask<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmpp::TrustLevels trustLevels);
- QFuture<void> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmpp::TrustLevel trustLevel);
- QFuture<void> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevel oldTrustLevel, QXmpp::TrustLevel newTrustLevel);
- QFuture<QXmpp::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId);
+ QXmppTask<void> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmpp::TrustLevel trustLevel);
+ QXmppTask<void> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevel oldTrustLevel, QXmpp::TrustLevel newTrustLevel);
+ QXmppTask<QXmpp::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId);
- QFuture<void> resetAll(const QString &encryption);
+ QXmppTask<void> resetAll(const QString &encryption);
Q_SIGNAL void trustLevelsChanged(const QHash<QString, QMultiHash<QString, QByteArray>> &modifiedKeys);
diff --git a/src/client/QXmppTrustMemoryStorage.cpp b/src/client/QXmppTrustMemoryStorage.cpp
index aca9dcb9..29762bb0 100644
--- a/src/client/QXmppTrustMemoryStorage.cpp
+++ b/src/client/QXmppTrustMemoryStorage.cpp
@@ -53,42 +53,42 @@ QXmppTrustMemoryStorage::QXmppTrustMemoryStorage()
QXmppTrustMemoryStorage::~QXmppTrustMemoryStorage() = default;
/// \cond
-QFuture<void> QXmppTrustMemoryStorage::setSecurityPolicy(const QString &encryption, TrustSecurityPolicy securityPolicy)
+QXmppTask<void> QXmppTrustMemoryStorage::setSecurityPolicy(const QString &encryption, TrustSecurityPolicy securityPolicy)
{
d->securityPolicies.insert(encryption, securityPolicy);
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppTrustMemoryStorage::resetSecurityPolicy(const QString &encryption)
+QXmppTask<void> QXmppTrustMemoryStorage::resetSecurityPolicy(const QString &encryption)
{
d->securityPolicies.remove(encryption);
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<TrustSecurityPolicy> QXmppTrustMemoryStorage::securityPolicy(const QString &encryption)
+QXmppTask<TrustSecurityPolicy> QXmppTrustMemoryStorage::securityPolicy(const QString &encryption)
{
- return makeReadyFuture(std::move(d->securityPolicies.value(encryption)));
+ return makeReadyTask(std::move(d->securityPolicies.value(encryption)));
}
-QFuture<void> QXmppTrustMemoryStorage::setOwnKey(const QString &encryption, const QByteArray &keyId)
+QXmppTask<void> QXmppTrustMemoryStorage::setOwnKey(const QString &encryption, const QByteArray &keyId)
{
d->ownKeys.insert(encryption, keyId);
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppTrustMemoryStorage::resetOwnKey(const QString &encryption)
+QXmppTask<void> QXmppTrustMemoryStorage::resetOwnKey(const QString &encryption)
{
d->ownKeys.remove(encryption);
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<QByteArray> QXmppTrustMemoryStorage::ownKey(const QString &encryption)
+QXmppTask<QByteArray> QXmppTrustMemoryStorage::ownKey(const QString &encryption)
{
auto key = d->ownKeys[encryption];
- return makeReadyFuture(std::move(key));
+ return makeReadyTask(std::move(key));
}
-QFuture<void> QXmppTrustMemoryStorage::addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, TrustLevel trustLevel)
+QXmppTask<void> QXmppTrustMemoryStorage::addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, TrustLevel trustLevel)
{
for (const auto &keyId : keyIds) {
Key key;
@@ -98,10 +98,10 @@ QFuture<void> QXmppTrustMemoryStorage::addKeys(const QString &encryption, const
d->keys.insert(encryption, key);
}
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption, const QList<QByteArray> &keyIds)
+QXmppTask<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption, const QList<QByteArray> &keyIds)
{
for (auto itr = d->keys.find(encryption);
itr != d->keys.end() && itr.key() == encryption;) {
@@ -112,10 +112,10 @@ QFuture<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption, con
}
}
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption, const QString &keyOwnerJid)
+QXmppTask<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption, const QString &keyOwnerJid)
{
for (auto itr = d->keys.find(encryption);
itr != d->keys.end() && itr.key() == encryption;) {
@@ -126,16 +126,16 @@ QFuture<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption, con
}
}
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption)
+QXmppTask<void> QXmppTrustMemoryStorage::removeKeys(const QString &encryption)
{
d->keys.remove(encryption);
- return makeReadyFuture();
+ return makeReadyTask();
}
-QFuture<QHash<TrustLevel, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage::keys(const QString &encryption, TrustLevels trustLevels)
+QXmppTask<QHash<TrustLevel, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage::keys(const QString &encryption, TrustLevels trustLevels)
{
QHash<TrustLevel, QMultiHash<QString, QByteArray>> keys;
@@ -147,10 +147,10 @@ QFuture<QHash<TrustLevel, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStor
}
}
- return makeReadyFuture(std::move(keys));
+ return makeReadyTask(std::move(keys));
}
-QFuture<QHash<QString, QHash<QByteArray, TrustLevel>>> QXmppTrustMemoryStorage::keys(const QString &encryption, const QList<QString> &keyOwnerJids, TrustLevels trustLevels)
+QXmppTask<QHash<QString, QHash<QByteArray, TrustLevel>>> QXmppTrustMemoryStorage::keys(const QString &encryption, const QList<QString> &keyOwnerJids, TrustLevels trustLevels)
{
QHash<QString, QHash<QByteArray, TrustLevel>> keys;
@@ -163,22 +163,22 @@ QFuture<QHash<QString, QHash<QByteArray, TrustLevel>>> QXmppTrustMemoryStorage::
}
}
- return makeReadyFuture(std::move(keys));
+ return makeReadyTask(std::move(keys));
}
-QFuture<bool> QXmppTrustMemoryStorage::hasKey(const QString &encryption, const QString &keyOwnerJid, TrustLevels trustLevels)
+QXmppTask<bool> QXmppTrustMemoryStorage::hasKey(const QString &encryption, const QString &keyOwnerJid, TrustLevels trustLevels)
{
const auto storedKeys = d->keys.values(encryption);
for (const auto &key : storedKeys) {
if (key.ownerJid == keyOwnerJid && trustLevels.testFlag(key.trustLevel)) {
- return makeReadyFuture(std::move(true));
+ return makeReadyTask(std::move(true));
}
}
- return makeReadyFuture(std::move(false));
+ return makeReadyTask(std::move(false));
}
-QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage::setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, TrustLevel trustLevel)
+QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage::setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, TrustLevel trustLevel)
{
QHash<QString, QMultiHash<QString, QByteArray>> modifiedKeys;
@@ -215,10 +215,10 @@ QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage
}
}
- return makeReadyFuture(std::move(modifiedKeys));
+ return makeReadyTask(std::move(modifiedKeys));
}
-QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage::setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, TrustLevel oldTrustLevel, TrustLevel newTrustLevel)
+QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage::setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, TrustLevel oldTrustLevel, TrustLevel newTrustLevel)
{
QHash<QString, QMultiHash<QString, QByteArray>> modifiedKeys;
@@ -231,27 +231,27 @@ QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> QXmppTrustMemoryStorage
}
}
- return makeReadyFuture(std::move(modifiedKeys));
+ return makeReadyTask(std::move(modifiedKeys));
}
-QFuture<TrustLevel> QXmppTrustMemoryStorage::trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId)
+QXmppTask<TrustLevel> QXmppTrustMemoryStorage::trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId)
{
const auto keys = d->keys.values(encryption);
for (const auto &key : keys) {
if (key.id == keyId && key.ownerJid == keyOwnerJid) {
- return makeReadyFuture(std::move(TrustLevel(key.trustLevel)));
+ return makeReadyTask(std::move(TrustLevel(key.trustLevel)));
}
}
- return makeReadyFuture(std::move(TrustLevel::Undecided));
+ return makeReadyTask(std::move(TrustLevel::Undecided));
}
-QFuture<void> QXmppTrustMemoryStorage::resetAll(const QString &encryption)
+QXmppTask<void> QXmppTrustMemoryStorage::resetAll(const QString &encryption)
{
d->securityPolicies.remove(encryption);
d->ownKeys.remove(encryption);
d->keys.remove(encryption);
- return makeReadyFuture();
+ return makeReadyTask();
}
/// \endcond
diff --git a/src/client/QXmppTrustMemoryStorage.h b/src/client/QXmppTrustMemoryStorage.h
index f5e92569..53c70aa7 100644
--- a/src/client/QXmppTrustMemoryStorage.h
+++ b/src/client/QXmppTrustMemoryStorage.h
@@ -18,27 +18,27 @@ public:
~QXmppTrustMemoryStorage();
/// \cond
- QFuture<void> setSecurityPolicy(const QString &encryption, QXmpp::TrustSecurityPolicy securityPolicy) override;
- QFuture<void> resetSecurityPolicy(const QString &encryption) override;
- QFuture<QXmpp::TrustSecurityPolicy> securityPolicy(const QString &encryption) override;
-
- QFuture<void> setOwnKey(const QString &encryption, const QByteArray &keyId) override;
- QFuture<void> resetOwnKey(const QString &encryption) override;
- QFuture<QByteArray> ownKey(const QString &encryption) override;
-
- QFuture<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmpp::TrustLevel trustLevel = QXmpp::TrustLevel::AutomaticallyDistrusted) override;
- QFuture<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds) override;
- QFuture<void> removeKeys(const QString &encryption, const QString &keyOwnerJid) override;
- QFuture<void> removeKeys(const QString &encryption) override;
- QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmpp::TrustLevels trustLevels = {}) override;
- QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels = {}) override;
- QFuture<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmpp::TrustLevels trustLevels) override;
-
- QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmpp::TrustLevel trustLevel) override;
- QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevel oldTrustLevel, QXmpp::TrustLevel newTrustLevel) override;
- QFuture<QXmpp::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId) override;
-
- QFuture<void> resetAll(const QString &encryption) override;
+ QXmppTask<void> setSecurityPolicy(const QString &encryption, QXmpp::TrustSecurityPolicy securityPolicy) override;
+ QXmppTask<void> resetSecurityPolicy(const QString &encryption) override;
+ QXmppTask<QXmpp::TrustSecurityPolicy> securityPolicy(const QString &encryption) override;
+
+ QXmppTask<void> setOwnKey(const QString &encryption, const QByteArray &keyId) override;
+ QXmppTask<void> resetOwnKey(const QString &encryption) override;
+ QXmppTask<QByteArray> ownKey(const QString &encryption) override;
+
+ QXmppTask<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmpp::TrustLevel trustLevel = QXmpp::TrustLevel::AutomaticallyDistrusted) override;
+ QXmppTask<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds) override;
+ QXmppTask<void> removeKeys(const QString &encryption, const QString &keyOwnerJid) override;
+ QXmppTask<void> removeKeys(const QString &encryption) override;
+ QXmppTask<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmpp::TrustLevels trustLevels = {}) override;
+ QXmppTask<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels = {}) override;
+ QXmppTask<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmpp::TrustLevels trustLevels) override;
+
+ QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmpp::TrustLevel trustLevel) override;
+ QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevel oldTrustLevel, QXmpp::TrustLevel newTrustLevel) override;
+ QXmppTask<QXmpp::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId) override;
+
+ QXmppTask<void> resetAll(const QString &encryption) override;
/// \endcond
private:
diff --git a/src/client/QXmppTrustStorage.h b/src/client/QXmppTrustStorage.h
index 0edc92a4..65c46e36 100644
--- a/src/client/QXmppTrustStorage.h
+++ b/src/client/QXmppTrustStorage.h
@@ -9,34 +9,35 @@
#include "QXmppTrustLevel.h"
#include "QXmppTrustSecurityPolicy.h"
-#include <QFuture>
+template<typename T>
+class QXmppTask;
class QXMPP_EXPORT QXmppTrustStorage
{
public:
virtual ~QXmppTrustStorage() = default;
- virtual QFuture<void> setSecurityPolicy(const QString &encryption, QXmpp::TrustSecurityPolicy securityPolicy) = 0;
- virtual QFuture<void> resetSecurityPolicy(const QString &encryption) = 0;
- virtual QFuture<QXmpp::TrustSecurityPolicy> securityPolicy(const QString &encryption) = 0;
+ virtual QXmppTask<void> setSecurityPolicy(const QString &encryption, QXmpp::TrustSecurityPolicy securityPolicy) = 0;
+ virtual QXmppTask<void> resetSecurityPolicy(const QString &encryption) = 0;
+ virtual QXmppTask<QXmpp::TrustSecurityPolicy> securityPolicy(const QString &encryption) = 0;
- virtual QFuture<void> setOwnKey(const QString &encryption, const QByteArray &keyId) = 0;
- virtual QFuture<void> resetOwnKey(const QString &encryption) = 0;
- virtual QFuture<QByteArray> ownKey(const QString &encryption) = 0;
+ virtual QXmppTask<void> setOwnKey(const QString &encryption, const QByteArray &keyId) = 0;
+ virtual QXmppTask<void> resetOwnKey(const QString &encryption) = 0;
+ virtual QXmppTask<QByteArray> ownKey(const QString &encryption) = 0;
- virtual QFuture<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmpp::TrustLevel trustLevel = QXmpp::TrustLevel::AutomaticallyDistrusted) = 0;
- virtual QFuture<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds) = 0;
- virtual QFuture<void> removeKeys(const QString &encryption, const QString &keyOwnerJid) = 0;
- virtual QFuture<void> removeKeys(const QString &encryption) = 0;
- virtual QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmpp::TrustLevels trustLevels = {}) = 0;
- virtual QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels = {}) = 0;
- virtual QFuture<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmpp::TrustLevels trustLevels) = 0;
+ virtual QXmppTask<void> addKeys(const QString &encryption, const QString &keyOwnerJid, const QList<QByteArray> &keyIds, QXmpp::TrustLevel trustLevel = QXmpp::TrustLevel::AutomaticallyDistrusted) = 0;
+ virtual QXmppTask<void> removeKeys(const QString &encryption, const QList<QByteArray> &keyIds) = 0;
+ virtual QXmppTask<void> removeKeys(const QString &encryption, const QString &keyOwnerJid) = 0;
+ virtual QXmppTask<void> removeKeys(const QString &encryption) = 0;
+ virtual QXmppTask<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> keys(const QString &encryption, QXmpp::TrustLevels trustLevels = {}) = 0;
+ virtual QXmppTask<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> keys(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevels trustLevels = {}) = 0;
+ virtual QXmppTask<bool> hasKey(const QString &encryption, const QString &keyOwnerJid, QXmpp::TrustLevels trustLevels) = 0;
- virtual QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmpp::TrustLevel trustLevel) = 0;
- virtual QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevel oldTrustLevel, QXmpp::TrustLevel newTrustLevel) = 0;
- virtual QFuture<QXmpp::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId) = 0;
+ virtual QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QMultiHash<QString, QByteArray> &keyIds, QXmpp::TrustLevel trustLevel) = 0;
+ virtual QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> setTrustLevel(const QString &encryption, const QList<QString> &keyOwnerJids, QXmpp::TrustLevel oldTrustLevel, QXmpp::TrustLevel newTrustLevel) = 0;
+ virtual QXmppTask<QXmpp::TrustLevel> trustLevel(const QString &encryption, const QString &keyOwnerJid, const QByteArray &keyId) = 0;
- virtual QFuture<void> resetAll(const QString &encryption) = 0;
+ virtual QXmppTask<void> resetAll(const QString &encryption) = 0;
};
#endif // QXMPPTRUSTSTORAGE_H
diff --git a/src/client/QXmppUploadRequestManager.cpp b/src/client/QXmppUploadRequestManager.cpp
index 17a58893..4a45d86b 100644
--- a/src/client/QXmppUploadRequestManager.cpp
+++ b/src/client/QXmppUploadRequestManager.cpp
@@ -185,7 +185,7 @@ QString QXmppUploadRequestManager::requestUploadSlot(const QString &fileName,
/// \since QXmpp 1.5
///
auto QXmppUploadRequestManager::requestSlot(const QFileInfo &file,
- const QString &uploadService) -> QFuture<SlotResult>
+ const QString &uploadService) -> QXmppTask<SlotResult>
{
return requestSlot(file, file.fileName(), uploadService);
}
@@ -206,7 +206,7 @@ auto QXmppUploadRequestManager::requestSlot(const QFileInfo &file,
///
auto QXmppUploadRequestManager::requestSlot(const QFileInfo &file,
const QString &customFileName,
- const QString &uploadService) -> QFuture<SlotResult>
+ const QString &uploadService) -> QXmppTask<SlotResult>
{
return requestSlot(customFileName, file.size(),
QMimeDatabase().mimeTypeForFile(file),
@@ -233,12 +233,12 @@ auto QXmppUploadRequestManager::requestSlot(const QFileInfo &file,
auto QXmppUploadRequestManager::requestSlot(const QString &fileName,
qint64 fileSize,
const QMimeType &mimeType,
- const QString &uploadService) -> QFuture<SlotResult>
+ const QString &uploadService) -> QXmppTask<SlotResult>
{
if (!serviceFound() && uploadService.isEmpty()) {
using Error = QXmppStanza::Error;
const auto errorMessage = QStringLiteral("Couldn't request upload slot: No service found.");
- return makeReadyFuture(SlotResult(Error(Error::Cancel, Error::FeatureNotImplemented, errorMessage)));
+ return makeReadyTask(SlotResult(Error(Error::Cancel, Error::FeatureNotImplemented, errorMessage)));
}
QXmppHttpUploadRequestIq iq;
diff --git a/src/client/QXmppUploadRequestManager.h b/src/client/QXmppUploadRequestManager.h
index 60a8da1e..e5ed752c 100644
--- a/src/client/QXmppUploadRequestManager.h
+++ b/src/client/QXmppUploadRequestManager.h
@@ -13,7 +13,7 @@
class QFileInfo;
template<typename T>
-class QFuture;
+class QXmppTask;
class QMimeType;
class QXmppHttpUploadRequestIq;
class QXmppHttpUploadSlotIq;
@@ -98,15 +98,15 @@ public:
const QString &uploadService = QString());
using SlotResult = std::variant<QXmppHttpUploadSlotIq, QXmppStanza::Error>;
- QFuture<SlotResult> requestSlot(const QFileInfo &file,
- const QString &uploadService = {});
- QFuture<SlotResult> requestSlot(const QFileInfo &file,
- const QString &customFileName,
- const QString &uploadService = {});
- QFuture<SlotResult> requestSlot(const QString &fileName,
- qint64 fileSize,
- const QMimeType &mimeType,
- const QString &uploadService = {});
+ QXmppTask<SlotResult> requestSlot(const QFileInfo &file,
+ const QString &uploadService = {});
+ QXmppTask<SlotResult> requestSlot(const QFileInfo &file,
+ const QString &customFileName,
+ const QString &uploadService = {});
+ QXmppTask<SlotResult> requestSlot(const QString &fileName,
+ qint64 fileSize,
+ const QMimeType &mimeType,
+ const QString &uploadService = {});
bool serviceFound() const;
diff --git a/src/client/QXmppUserLocationManager.cpp b/src/client/QXmppUserLocationManager.cpp
index cf35013e..90c79dea 100644
--- a/src/client/QXmppUserLocationManager.cpp
+++ b/src/client/QXmppUserLocationManager.cpp
@@ -77,7 +77,7 @@ QStringList QXmppUserLocationManager::discoveryFeatures() const
/// \param jid The account JID to request.
///
auto QXmppUserLocationManager::request(const QString &jid)
- -> QFuture<GetResult>
+ -> QXmppTask<GetResult>
{
return Pep::request<Item>(pubSub(client()), jid, ns_geoloc, this);
}
@@ -88,7 +88,7 @@ auto QXmppUserLocationManager::request(const QString &jid)
/// \param item The User Location item to be published.
///
auto QXmppUserLocationManager::publish(const QXmppGeolocItem &item)
- -> QFuture<PublishResult>
+ -> QXmppTask<PublishResult>
{
return pubSub(client())->publishOwnPepItem(ns_geoloc, item);
}
diff --git a/src/client/QXmppUserLocationManager.h b/src/client/QXmppUserLocationManager.h
index bc455d86..f9db4bc1 100644
--- a/src/client/QXmppUserLocationManager.h
+++ b/src/client/QXmppUserLocationManager.h
@@ -12,7 +12,7 @@
#include <variant>
template<typename T>
-class QFuture;
+class QXmppTask;
class QXmppGeolocItem;
class QXMPP_EXPORT QXmppUserLocationManager : public QXmppClientExtension, public QXmppPubSubEventHandler
@@ -28,8 +28,8 @@ public:
QStringList discoveryFeatures() const override;
- QFuture<GetResult> request(const QString &jid);
- QFuture<PublishResult> publish(const Item &);
+ QXmppTask<GetResult> request(const QString &jid);
+ QXmppTask<PublishResult> publish(const Item &);
Q_SIGNAL void itemReceived(const QString &jid, const QXmppGeolocItem &);
diff --git a/src/client/QXmppUserTuneManager.cpp b/src/client/QXmppUserTuneManager.cpp
index e0023416..ab46db64 100644
--- a/src/client/QXmppUserTuneManager.cpp
+++ b/src/client/QXmppUserTuneManager.cpp
@@ -78,7 +78,7 @@ QStringList QXmppUserTuneManager::discoveryFeatures() const
/// \param jid The account JID to request.
///
auto QXmppUserTuneManager::request(const QString &jid)
- -> QFuture<GetResult>
+ -> QXmppTask<GetResult>
{
return Pep::request<Item>(pubSub(client()), jid, ns_tune, this);
}
@@ -89,7 +89,7 @@ auto QXmppUserTuneManager::request(const QString &jid)
/// \param item The User Tune item to be published.
///
auto QXmppUserTuneManager::publish(const QXmppTuneItem &item)
- -> QFuture<PublishResult>
+ -> QXmppTask<PublishResult>
{
return pubSub(client())->publishOwnPepItem(ns_tune, item);
}
diff --git a/src/client/QXmppUserTuneManager.h b/src/client/QXmppUserTuneManager.h
index b25d1b00..90bc2d25 100644
--- a/src/client/QXmppUserTuneManager.h
+++ b/src/client/QXmppUserTuneManager.h
@@ -12,7 +12,7 @@
class QXmppTuneItem;
template<typename T>
-class QFuture;
+class QXmppTask;
class QXMPP_EXPORT QXmppUserTuneManager : public QXmppClientExtension, public QXmppPubSubEventHandler
{
@@ -27,8 +27,8 @@ public:
QStringList discoveryFeatures() const override;
- QFuture<GetResult> request(const QString &jid);
- QFuture<PublishResult> publish(const QXmppTuneItem &);
+ QXmppTask<GetResult> request(const QString &jid);
+ QXmppTask<PublishResult> publish(const QXmppTuneItem &);
Q_SIGNAL void itemReceived(const QString &jid, const QXmppTuneItem &item);