aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppClient.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-04-04 17:28:28 +0200
committerLinus Jahn <lnj@kaidan.im>2022-05-20 16:55:28 +0200
commit7b0d7e727052119d40854b621f7da775ac2fea4c (patch)
tree0dda044c808f2b21174c3533ddacd93ea45830be /src/client/QXmppClient.cpp
parentbab7db9d579e52d7e6e27330042797fc9829c485 (diff)
downloadqxmpp-7b0d7e727052119d40854b621f7da775ac2fea4c.tar.gz
Client: Refactor: Use new 'StanzaPipeline'
This is going to become useful when the other pipelines (messages, IQs) will follow.
Diffstat (limited to 'src/client/QXmppClient.cpp')
-rw-r--r--src/client/QXmppClient.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp
index 0b14bc68..b1c60233 100644
--- a/src/client/QXmppClient.cpp
+++ b/src/client/QXmppClient.cpp
@@ -107,6 +107,20 @@ QStringList QXmppClientPrivate::discoveryFeatures()
}
/// \endcond
+namespace QXmpp::Private::StanzaPipeline {
+
+bool process(const QList<QXmppClientExtension *> &extensions, const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata)
+{
+ for (auto *extension : extensions) {
+ if (extension->handleStanza(element, e2eeMetadata) || extension->handleStanza(element)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+}
+
///
/// \typedef QXmppClient::IqResult
///
@@ -765,20 +779,14 @@ QXmppVersionManager &QXmppClient::versionManager()
return *findExtension<QXmppVersionManager>();
}
+///
/// Give extensions a chance to handle incoming stanzas.
///
-/// \param element
-/// \param handled
-
void QXmppClient::_q_elementReceived(const QDomElement &element, bool &handled)
{
- const std::optional<QXmppE2eeMetadata> e2eeMetadata;
- for (auto *extension : std::as_const(d->extensions)) {
- if (extension->handleStanza(element, e2eeMetadata) || extension->handleStanza(element)) {
- handled = true;
- return;
- }
- }
+ // The stanza comes directly from the XMPP stream, so it's not end-to-end
+ // encrypted and there's no e2ee metadata (std::nullopt).
+ handled = StanzaPipeline::process(d->extensions, element, std::nullopt);
}
void QXmppClient::_q_reconnect()