diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-05-22 19:16:45 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-05-22 19:35:56 +0200 |
| commit | 5cf3038e74983c45cf27d77214ec548db5d36572 (patch) | |
| tree | 8f368a41126415af0cdf6506ef5d9ec01359329a /src | |
| parent | 4a146238b0ddaed6e59f92c0f75536695a9f6b6c (diff) | |
| download | qxmpp-5cf3038e74983c45cf27d77214ec548db5d36572.tar.gz | |
Client: Add SendStanzaParams parameter to send functions
It can already be used by E2eeExtension.
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/QXmppClient.cpp | 26 | ||||
| -rw-r--r-- | src/client/QXmppClient.h | 13 | ||||
| -rw-r--r-- | src/client/QXmppE2eeExtension.h | 7 |
3 files changed, 27 insertions, 19 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp index 650e9991..76c9ea25 100644 --- a/src/client/QXmppClient.cpp +++ b/src/client/QXmppClient.cpp @@ -406,7 +406,7 @@ bool QXmppClient::sendPacket(const QXmppNonza &packet) /// /// \since QXmpp 1.5 /// -QFuture<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza) +QFuture<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza, const std::optional<QXmppSendStanzaParams> ¶ms) { const auto sendEncrypted = [this](QFuture<MessageEncryptResult> &&future) { QFutureInterface<QXmpp::SendResult> interface(QFutureInterfaceBase::Started); @@ -427,9 +427,13 @@ QFuture<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza) if (d->encryptionExtension) { if (dynamic_cast<QXmppMessage *>(&stanza)) { - return sendEncrypted(d->encryptionExtension->encryptMessage(std::move(dynamic_cast<QXmppMessage &&>(stanza)))); + return sendEncrypted( + d->encryptionExtension->encryptMessage( + std::move(dynamic_cast<QXmppMessage &&>(stanza)), params)); } else if (dynamic_cast<QXmppIq *>(&stanza)) { - return sendEncrypted(d->encryptionExtension->encryptIq(std::move(dynamic_cast<QXmppIq &&>(stanza)))); + return sendEncrypted( + d->encryptionExtension->encryptIq( + std::move(dynamic_cast<QXmppIq &&>(stanza)), params)); } } return d->stream->send(stanza); @@ -449,7 +453,7 @@ QFuture<QXmpp::SendResult> QXmppClient::send(QXmppStanza &&stanza) /// /// \since QXmpp 1.5 /// -QFuture<QXmpp::SendResult> QXmppClient::sendUnencrypted(QXmppStanza &&stanza) +QFuture<QXmpp::SendResult> QXmppClient::sendUnencrypted(QXmppStanza &&stanza, const std::optional<QXmppSendStanzaParams> &) { return d->stream->send(stanza); } @@ -463,14 +467,14 @@ QFuture<QXmpp::SendResult> QXmppClient::sendUnencrypted(QXmppStanza &&stanza) /// /// \since QXmpp 1.5 /// -QFuture<QXmpp::SendResult> QXmppClient::reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata) +QFuture<QXmpp::SendResult> QXmppClient::reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata, const std::optional<QXmppSendStanzaParams> ¶ms) { // This should pick the right e2ee manager as soon as multiple encryptions // in parallel are supported. if (e2eeMetadata) { - return send(std::move(stanza)); + return send(std::move(stanza), params); } - return sendUnencrypted(std::move(stanza)); + return sendUnencrypted(std::move(stanza), params); } /// @@ -488,7 +492,7 @@ QFuture<QXmpp::SendResult> QXmppClient::reply(QXmppStanza &&stanza, const std::o /// /// \since QXmpp 1.5 /// -QFuture<QXmppClient::IqResult> QXmppClient::sendIq(QXmppIq &&iq) +QFuture<QXmppClient::IqResult> QXmppClient::sendIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> &) { return d->stream->sendIq(std::move(iq)); } @@ -506,7 +510,7 @@ QFuture<QXmppClient::IqResult> QXmppClient::sendIq(QXmppIq &&iq) /// /// \since QXmpp 1.5 /// -QFuture<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq) +QFuture<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq, const std::optional<QXmppSendStanzaParams> ¶ms) { const auto sendEncrypted = [this](QFuture<IqEncryptResult> &&future, const QString &id) { QFutureInterface<IqResult> interface(QFutureInterfaceBase::Started); @@ -559,7 +563,7 @@ QFuture<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq) if (d->encryptionExtension) { const auto id = iq.id(); - return sendEncrypted(d->encryptionExtension->encryptIq(std::move(iq)), id); + return sendEncrypted(d->encryptionExtension->encryptIq(std::move(iq), params), id); } return d->stream->sendIq(std::move(iq)); } @@ -577,7 +581,7 @@ QFuture<QXmppClient::IqResult> QXmppClient::sendSensitiveIq(QXmppIq &&iq) /// /// \since QXmpp 1.5 /// -QFuture<QXmppClient::EmptyResult> QXmppClient::sendGenericIq(QXmppIq &&iq) +QFuture<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 82ac7d7b..ac53850f 100644 --- a/src/client/QXmppClient.h +++ b/src/client/QXmppClient.h @@ -9,6 +9,7 @@ #include "QXmppLogger.h" #include "QXmppPresence.h" #include "QXmppSendResult.h" +#include "QXmppSendStanzaParams.h" #include <variant> @@ -215,12 +216,12 @@ public: State state() const; QXmppStanza::Error::Condition xmppStreamError(); - QFuture<QXmpp::SendResult> send(QXmppStanza &&); - QFuture<QXmpp::SendResult> sendUnencrypted(QXmppStanza &&); - QFuture<QXmpp::SendResult> reply(QXmppStanza &&stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata); - QFuture<IqResult> sendIq(QXmppIq &&); - QFuture<IqResult> sendSensitiveIq(QXmppIq &&); - QFuture<EmptyResult> sendGenericIq(QXmppIq &&); + 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> & = {}); #if QXMPP_DEPRECATED_SINCE(1, 1) QT_DEPRECATED_X("Use QXmppClient::findExtension<QXmppRosterManager>() instead") diff --git a/src/client/QXmppE2eeExtension.h b/src/client/QXmppE2eeExtension.h index 442d94ba..6c3556f2 100644 --- a/src/client/QXmppE2eeExtension.h +++ b/src/client/QXmppE2eeExtension.h @@ -7,6 +7,9 @@ #include "QXmppExtension.h" #include "QXmppSendResult.h" +#include "QXmppSendStanzaParams.h" + +#include <optional> class QDomElement; class QXmppMessage; @@ -25,9 +28,9 @@ public: using IqEncryptResult = std::variant<QByteArray, QXmpp::SendError>; using IqDecryptResult = std::variant<QDomElement, NotEncrypted, QXmpp::SendError>; - virtual QFuture<MessageEncryptResult> encryptMessage(QXmppMessage &&) = 0; + virtual QFuture<MessageEncryptResult> encryptMessage(QXmppMessage &&, const std::optional<QXmppSendStanzaParams> &) = 0; - virtual QFuture<IqEncryptResult> encryptIq(QXmppIq &&) = 0; + virtual QFuture<IqEncryptResult> encryptIq(QXmppIq &&, const std::optional<QXmppSendStanzaParams> &) = 0; virtual QFuture<IqDecryptResult> decryptIq(const QDomElement &) = 0; }; |
