aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppStanza.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-05-13 22:10:21 +0200
committerLinus Jahn <lnj@kaidan.im>2022-05-13 23:20:58 +0200
commit402bb6f33610f7aba9d8295d8c08be2e64324a5d (patch)
treeaada86d4eacc2a08c37c4e5f37c387320146f6b0 /src/base/QXmppStanza.cpp
parent8a9bae9f60de9789e391291372df26ef93b7fd75 (diff)
downloadqxmpp-402bb6f33610f7aba9d8295d8c08be2e64324a5d.tar.gz
Stanza: Refactor storage of optional e2ee metadata
Diffstat (limited to 'src/base/QXmppStanza.cpp')
-rw-r--r--src/base/QXmppStanza.cpp38
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