From 402bb6f33610f7aba9d8295d8c08be2e64324a5d Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Fri, 13 May 2022 22:10:21 +0200 Subject: Stanza: Refactor storage of optional e2ee metadata --- src/base/QXmppStanza.cpp | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) (limited to 'src/base/QXmppStanza.cpp') diff --git a/src/base/QXmppStanza.cpp b/src/base/QXmppStanza.cpp index d90d105b..d3284e2a 100644 --- a/src/base/QXmppStanza.cpp +++ b/src/base/QXmppStanza.cpp @@ -718,6 +718,13 @@ QXmppE2eeMetadata::QXmppE2eeMetadata() { } +/// \cond +QXmppE2eeMetadata::QXmppE2eeMetadata(QSharedDataPointer d) + : d(d) +{ +} +/// \endcond + /// /// Constructs a copy of \a other. /// @@ -727,24 +734,6 @@ QXmppE2eeMetadata::QXmppE2eeMetadata(const QXmppE2eeMetadata &other) = default; QXmppE2eeMetadata::~QXmppE2eeMetadata() = default; -/// \cond -QXmppE2eeMetadata::QXmppE2eeMetadata(const std::optional &other) - : d(nullptr) -{ - if (other) { - *this = *other; - } -} - -std::optional QXmppE2eeMetadata::toOptional() const -{ - if (d) { - return *this; - } - return {}; -} -/// \endcond - /// /// Assigns \a other to this end-to-end encryption metadata class. /// @@ -858,7 +847,7 @@ public: QXmppStanza::Error error; QXmppElementList extensions; QList extendedAddresses; - QXmppE2eeMetadata e2eeMetadata = QXmppE2eeMetadata(std::nullopt); + QSharedDataPointer e2eeMetadata; }; /// @@ -1018,7 +1007,10 @@ void QXmppStanza::setExtendedAddresses(const QList &addres /// std::optional QXmppStanza::e2eeMetadata() const { - return d->e2eeMetadata.toOptional(); + if (d->e2eeMetadata) { + return QXmppE2eeMetadata(d->e2eeMetadata); + } + return {}; } /// @@ -1028,7 +1020,11 @@ std::optional QXmppStanza::e2eeMetadata() const /// void QXmppStanza::setE2eeMetadata(const std::optional &e2eeMetadata) { - d->e2eeMetadata = QXmppE2eeMetadata(e2eeMetadata); + if (e2eeMetadata) { + d->e2eeMetadata = e2eeMetadata->d; + } else { + d->e2eeMetadata = nullptr; + } } /// \cond -- cgit v1.2.3