diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-09-30 23:54:08 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-09-30 23:56:01 +0200 |
| commit | 977501afcbabb79d2677bff823ae33e2af8a8cd3 (patch) | |
| tree | e0f9e2887f59c7eaac2911cf6ba77f6e69170e14 /src/client/QXmppFileSharingManager.cpp | |
| parent | 668b6f1ae936103dbd0180567dff7fca3d7dd935 (diff) | |
FileSharingManager: Use private class with d-ptr
Diffstat (limited to 'src/client/QXmppFileSharingManager.cpp')
| -rw-r--r-- | src/client/QXmppFileSharingManager.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
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 <any> +#include <unordered_map> #include <QFile> #include <QFileInfo> @@ -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<QIODevice>) -> QFuture<std::shared_ptr<MetadataGeneratorResult>> { + return makeReadyFuture(std::make_shared<MetadataGeneratorResult>()); + }; + std::unordered_map<std::type_index, std::shared_ptr<QXmppFileSharingProvider>> providers; +}; + /// /// \class QXmppFileSharingProvider /// @@ -49,12 +62,12 @@ using namespace QXmpp::Private; /// QXmppFileSharingManager::QXmppFileSharingManager() - : m_metadataGenerator([](std::unique_ptr<QIODevice> &&) -> QFuture<std::shared_ptr<MetadataGeneratorResult>> { - return makeReadyFuture(std::make_shared<MetadataGeneratorResult>()); - }) + : d(std::make_unique<QXmppFileSharingManagerPrivate>()) { } +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<QXmppUpload> QXmppFileSharingManager::sendFile(std::shared_ptr<Q return device; }; - auto metadataFuture = m_metadataGenerator(openFile()); + auto metadataFuture = d->metadataGenerator(openFile()); auto hashesFuture = calculateHashes(openFile(), { HashAlgorithm::Sha256 }); upload = provider->uploadFile(openFile(), metadata); @@ -193,7 +206,7 @@ std::shared_ptr<QXmppDownload> 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<QXmppDownload> QXmppFileSharingManager::downloadFile( void QXmppFileSharingManager::internalRegisterProvider(std::type_index index, std::shared_ptr<QXmppFileSharingProvider> provider) { - m_providers.insert_or_assign(index, provider); + d->providers.insert_or_assign(index, provider); } |
