diff options
| author | Jonah BrĂ¼chert <jbb@kaidan.im> | 2022-09-29 19:24:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-29 19:24:57 +0200 |
| commit | 8fb5a45163c29e6ff4747f2ced28a54778904e4e (patch) | |
| tree | f793b8f1e34e6e95cf5beb45a2013b63df2907f9 /src/client/QXmppHttpUploadManager.cpp | |
| parent | bd196fa5d04bd133fc7fcf8f6dc7a7281d0f41a0 (diff) | |
HttpUploadManager: Use unique_ptr for data device (#479)
Diffstat (limited to 'src/client/QXmppHttpUploadManager.cpp')
| -rw-r--r-- | src/client/QXmppHttpUploadManager.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/client/QXmppHttpUploadManager.cpp b/src/client/QXmppHttpUploadManager.cpp index 728956e5..f6261773 100644 --- a/src/client/QXmppHttpUploadManager.cpp +++ b/src/client/QXmppHttpUploadManager.cpp @@ -273,7 +273,7 @@ QXmppHttpUploadManager::~QXmppHttpUploadManager() = default; /// }); /// \endcode /// -std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(QIODevice *data, const QString &filename, const QMimeType &mimeType, qint64 fileSize, const QString &uploadServiceJid) +std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(std::unique_ptr<QIODevice> data, const QString &filename, const QMimeType &mimeType, qint64 fileSize, const QString &uploadServiceJid) { using SlotResult = QXmppUploadRequestManager::SlotResult; @@ -304,7 +304,7 @@ std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(QIODevice *d } auto future = client()->findExtension<QXmppUploadRequestManager>()->requestSlot(filename, fileSize, mimeType, uploadServiceJid); - await(future, this, [this, upload, data](SlotResult result) { + await(future, this, [this, upload, data = std::move(data)](SlotResult result) mutable { // first check whether upload was cancelled in the meantime if (upload->d->cancelled) { upload->d->reportFinished(); @@ -331,7 +331,10 @@ std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(QIODevice *d for (auto itr = headers.cbegin(); itr != headers.cend(); ++itr) { request.setRawHeader(itr.key().toUtf8(), itr.value().toUtf8()); } - auto *reply = d->netManager->put(request, data); + + auto *rawSourceDevice = data.release(); + auto *reply = d->netManager->put(request, rawSourceDevice); + rawSourceDevice->setParent(reply); upload->d->reply = reply; connect(reply, &QNetworkReply::finished, this, [reply, upload]() { @@ -400,12 +403,10 @@ std::shared_ptr<QXmppHttpUpload> QXmppHttpUploadManager::uploadFile(const QFileI } auto upload = uploadFile( - file.get(), + std::move(file), filename.isEmpty() ? fileInfo.fileName() : filename, QMimeDatabase().mimeTypeForFile(fileInfo), -1, uploadServiceJid); - // from now on lifetime is bound to the upload - file.release()->setParent(upload.get()); return upload; } |
