diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-04-04 17:28:28 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-05-20 16:55:28 +0200 |
| commit | 7b0d7e727052119d40854b621f7da775ac2fea4c (patch) | |
| tree | 0dda044c808f2b21174c3533ddacd93ea45830be /src/client/QXmppClient.cpp | |
| parent | bab7db9d579e52d7e6e27330042797fc9829c485 (diff) | |
| download | qxmpp-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.cpp | 28 |
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() |
