From 5cf3038e74983c45cf27d77214ec548db5d36572 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sun, 22 May 2022 19:16:45 +0200 Subject: Client: Add SendStanzaParams parameter to send functions It can already be used by E2eeExtension. --- src/client/QXmppClient.cpp | 26 +++++++++++++++----------- src/client/QXmppClient.h | 13 +++++++------ src/client/QXmppE2eeExtension.h | 7 +++++-- 3 files changed, 27 insertions(+), 19 deletions(-) (limited to 'src/client') 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 QXmppClient::send(QXmppStanza &&stanza) +QFuture QXmppClient::send(QXmppStanza &&stanza, const std::optional ¶ms) { const auto sendEncrypted = [this](QFuture &&future) { QFutureInterface interface(QFutureInterfaceBase::Started); @@ -427,9 +427,13 @@ QFuture QXmppClient::send(QXmppStanza &&stanza) if (d->encryptionExtension) { if (dynamic_cast(&stanza)) { - return sendEncrypted(d->encryptionExtension->encryptMessage(std::move(dynamic_cast(stanza)))); + return sendEncrypted( + d->encryptionExtension->encryptMessage( + std::move(dynamic_cast(stanza)), params)); } else if (dynamic_cast(&stanza)) { - return sendEncrypted(d->encryptionExtension->encryptIq(std::move(dynamic_cast(stanza)))); + return sendEncrypted( + d->encryptionExtension->encryptIq( + std::move(dynamic_cast(stanza)), params)); } } return d->stream->send(stanza); @@ -449,7 +453,7 @@ QFuture QXmppClient::send(QXmppStanza &&stanza) /// /// \since QXmpp 1.5 /// -QFuture QXmppClient::sendUnencrypted(QXmppStanza &&stanza) +QFuture QXmppClient::sendUnencrypted(QXmppStanza &&stanza, const std::optional &) { return d->stream->send(stanza); } @@ -463,14 +467,14 @@ QFuture QXmppClient::sendUnencrypted(QXmppStanza &&stanza) /// /// \since QXmpp 1.5 /// -QFuture QXmppClient::reply(QXmppStanza &&stanza, const std::optional &e2eeMetadata) +QFuture QXmppClient::reply(QXmppStanza &&stanza, const std::optional &e2eeMetadata, const std::optional ¶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 QXmppClient::reply(QXmppStanza &&stanza, const std::o /// /// \since QXmpp 1.5 /// -QFuture QXmppClient::sendIq(QXmppIq &&iq) +QFuture QXmppClient::sendIq(QXmppIq &&iq, const std::optional &) { return d->stream->sendIq(std::move(iq)); } @@ -506,7 +510,7 @@ QFuture QXmppClient::sendIq(QXmppIq &&iq) /// /// \since QXmpp 1.5 /// -QFuture QXmppClient::sendSensitiveIq(QXmppIq &&iq) +QFuture QXmppClient::sendSensitiveIq(QXmppIq &&iq, const std::optional ¶ms) { const auto sendEncrypted = [this](QFuture &&future, const QString &id) { QFutureInterface interface(QFutureInterfaceBase::Started); @@ -559,7 +563,7 @@ QFuture 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::sendSensitiveIq(QXmppIq &&iq) /// /// \since QXmpp 1.5 /// -QFuture QXmppClient::sendGenericIq(QXmppIq &&iq) +QFuture QXmppClient::sendGenericIq(QXmppIq &&iq, const std::optional &) { 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 @@ -215,12 +216,12 @@ public: State state() const; QXmppStanza::Error::Condition xmppStreamError(); - QFuture send(QXmppStanza &&); - QFuture sendUnencrypted(QXmppStanza &&); - QFuture reply(QXmppStanza &&stanza, const std::optional &e2eeMetadata); - QFuture sendIq(QXmppIq &&); - QFuture sendSensitiveIq(QXmppIq &&); - QFuture sendGenericIq(QXmppIq &&); + QFuture send(QXmppStanza &&, const std::optional & = {}); + QFuture sendUnencrypted(QXmppStanza &&, const std::optional & = {}); + QFuture reply(QXmppStanza &&stanza, const std::optional &e2eeMetadata, const std::optional & = {}); + QFuture sendIq(QXmppIq &&, const std::optional & = {}); + QFuture sendSensitiveIq(QXmppIq &&, const std::optional & = {}); + QFuture sendGenericIq(QXmppIq &&, const std::optional & = {}); #if QXMPP_DEPRECATED_SINCE(1, 1) QT_DEPRECATED_X("Use QXmppClient::findExtension() 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 class QDomElement; class QXmppMessage; @@ -25,9 +28,9 @@ public: using IqEncryptResult = std::variant; using IqDecryptResult = std::variant; - virtual QFuture encryptMessage(QXmppMessage &&) = 0; + virtual QFuture encryptMessage(QXmppMessage &&, const std::optional &) = 0; - virtual QFuture encryptIq(QXmppIq &&) = 0; + virtual QFuture encryptIq(QXmppIq &&, const std::optional &) = 0; virtual QFuture decryptIq(const QDomElement &) = 0; }; -- cgit v1.2.3