From 977501afcbabb79d2677bff823ae33e2af8a8cd3 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Fri, 30 Sep 2022 23:54:08 +0200 Subject: FileSharingManager: Use private class with d-ptr --- src/client/QXmppFileSharingManager.cpp | 27 ++++++++++++++++++++------- src/client/QXmppFileSharingManager.h | 7 +++---- 2 files changed, 23 insertions(+), 11 deletions(-) (limited to 'src/client') diff --git a/src/client/QXmppFileSharingManager.cpp b/src/client/QXmppFileSharingManager.cpp index 2daf980a..c72b9632 100644 --- a/src/client/QXmppFileSharingManager.cpp +++ b/src/client/QXmppFileSharingManager.cpp @@ -17,6 +17,7 @@ #include "QXmppUploadRequestManager.h" #include +#include #include #include @@ -28,6 +29,18 @@ using namespace QXmpp; using namespace QXmpp::Private; +using MetadataGenerator = QXmppFileSharingManager::MetadataGenerator; +using MetadataGeneratorResult = QXmppFileSharingManager::MetadataGeneratorResult; + +class QXmppFileSharingManagerPrivate +{ +public: + MetadataGenerator metadataGenerator = [](std::unique_ptr) -> QFuture> { + return makeReadyFuture(std::make_shared()); + }; + std::unordered_map> providers; +}; + /// /// \class QXmppFileSharingProvider /// @@ -49,12 +62,12 @@ using namespace QXmpp::Private; /// QXmppFileSharingManager::QXmppFileSharingManager() - : m_metadataGenerator([](std::unique_ptr &&) -> QFuture> { - return makeReadyFuture(std::make_shared()); - }) + : d(std::make_unique()) { } +QXmppFileSharingManager::~QXmppFileSharingManager() = default; + /// /// \typedef QXmppFileSharingManager::MetadataGenerator /// @@ -71,7 +84,7 @@ QXmppFileSharingManager::QXmppFileSharingManager() /// void QXmppFileSharingManager::setMetadataGenerator(MetadataGenerator &&generator) { - m_metadataGenerator = std::move(generator); + d->metadataGenerator = std::move(generator); } /// @@ -102,7 +115,7 @@ std::shared_ptr QXmppFileSharingManager::sendFile(std::shared_ptrmetadataGenerator(openFile()); auto hashesFuture = calculateHashes(openFile(), { HashAlgorithm::Sha256 }); upload = provider->uploadFile(openFile(), metadata); @@ -193,7 +206,7 @@ std::shared_ptr QXmppFileSharingManager::downloadFile( fileShare.visitSources([&](const std::any &source) { std::type_index index(source.type()); try { - auto provider = m_providers.at(index); + auto provider = d->providers.at(index); download = provider->downloadFile(source, std::move(output)); return true; } catch (const std::out_of_range &) { @@ -206,5 +219,5 @@ std::shared_ptr QXmppFileSharingManager::downloadFile( void QXmppFileSharingManager::internalRegisterProvider(std::type_index index, std::shared_ptr provider) { - m_providers.insert_or_assign(index, provider); + d->providers.insert_or_assign(index, provider); } diff --git a/src/client/QXmppFileSharingManager.h b/src/client/QXmppFileSharingManager.h index 96632f3f..20a1cdc4 100644 --- a/src/client/QXmppFileSharingManager.h +++ b/src/client/QXmppFileSharingManager.h @@ -10,7 +10,6 @@ #include "QXmppFileSharingProvider.h" #include "QXmppGlobal.h" -#include #include #include #include @@ -18,11 +17,11 @@ #include #include -#include #include class QIODevice; class QXmppFileMetadata; +class QXmppFileSharingManagerPrivate; class QXMPP_EXPORT QXmppFileSharingManager : public QXmppClientExtension { @@ -46,6 +45,7 @@ public: using MetadataGenerator = std::function>(std::unique_ptr)>; QXmppFileSharingManager(); + ~QXmppFileSharingManager(); void setMetadataGenerator(MetadataGenerator &&generator); @@ -71,8 +71,7 @@ public: private: void internalRegisterProvider(std::type_index, std::shared_ptr provider); - MetadataGenerator m_metadataGenerator; - std::unordered_map> m_providers; + std::unique_ptr d; }; #endif // QXMPPFILESHARINGMANAGER_H -- cgit v1.2.3