aboutsummaryrefslogtreecommitdiff
path: root/src/client/QcaInitializer.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-09-16 20:15:12 +0200
committerLinus Jahn <lnj@kaidan.im>2022-09-24 18:11:58 +0200
commit9d9d0b22664c6860a005818e9e787670aec389ff (patch)
tree7794d72055aeddc8bbda216bd562f9053e1e8b8f /src/client/QcaInitializer.cpp
parentb71a66f3a7e07427378a23eb42291ed3758e08b2 (diff)
downloadqxmpp-9d9d0b22664c6860a005818e9e787670aec389ff.tar.gz
Add shared QcaInitializer
Can be used by OMEMO manager and other parts of the code using QCA.
Diffstat (limited to 'src/client/QcaInitializer.cpp')
-rw-r--r--src/client/QcaInitializer.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/client/QcaInitializer.cpp b/src/client/QcaInitializer.cpp
new file mode 100644
index 00000000..1a24259b
--- /dev/null
+++ b/src/client/QcaInitializer.cpp
@@ -0,0 +1,30 @@
+// SPDX-FileCopyrightText: 2022 Linus Jahn <lnj@kaidan.im>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#include "QcaInitializer_p.h"
+#include <QtCrypto>
+
+using namespace QCA;
+
+namespace QXmpp::Private {
+
+/// \cond
+QcaInitializer::QcaInitializer()
+ : d(createInitializer())
+{
+}
+
+std::shared_ptr<Initializer> QcaInitializer::createInitializer()
+{
+ static std::weak_ptr<Initializer> initializer;
+ if (initializer.expired()) {
+ auto newInitializer = std::make_shared<Initializer>();
+ initializer = newInitializer;
+ return newInitializer;
+ }
+ return initializer.lock();
+}
+/// \endcond
+
+} // namespace QXmpp::Private