diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-05-13 22:10:21 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-05-13 23:20:58 +0200 |
| commit | 402bb6f33610f7aba9d8295d8c08be2e64324a5d (patch) | |
| tree | aada86d4eacc2a08c37c4e5f37c387320146f6b0 /src/base/QXmppStanza.cpp | |
| parent | 8a9bae9f60de9789e391291372df26ef93b7fd75 (diff) | |
| download | qxmpp-402bb6f33610f7aba9d8295d8c08be2e64324a5d.tar.gz | |
Stanza: Refactor storage of optional e2ee metadata
Diffstat (limited to 'src/base/QXmppStanza.cpp')
| -rw-r--r-- | src/base/QXmppStanza.cpp | 38 |
1 files changed, 17 insertions, 21 deletions
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<QXmppE2eeMetadataPrivate> 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<QXmppE2eeMetadata> &other) - : d(nullptr) -{ - if (other) { - *this = *other; - } -} - -std::optional<QXmppE2eeMetadata> 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<QXmppExtendedAddress> extendedAddresses; - QXmppE2eeMetadata e2eeMetadata = QXmppE2eeMetadata(std::nullopt); + QSharedDataPointer<QXmppE2eeMetadataPrivate> e2eeMetadata; }; /// @@ -1018,7 +1007,10 @@ void QXmppStanza::setExtendedAddresses(const QList<QXmppExtendedAddress> &addres /// std::optional<QXmppE2eeMetadata> QXmppStanza::e2eeMetadata() const { - return d->e2eeMetadata.toOptional(); + if (d->e2eeMetadata) { + return QXmppE2eeMetadata(d->e2eeMetadata); + } + return {}; } /// @@ -1028,7 +1020,11 @@ std::optional<QXmppE2eeMetadata> QXmppStanza::e2eeMetadata() const /// void QXmppStanza::setE2eeMetadata(const std::optional<QXmppE2eeMetadata> &e2eeMetadata) { - d->e2eeMetadata = QXmppE2eeMetadata(e2eeMetadata); + if (e2eeMetadata) { + d->e2eeMetadata = e2eeMetadata->d; + } else { + d->e2eeMetadata = nullptr; + } } /// \cond |
