From 92f20c57112e5d4bffcbe66dac458ac9c87b7914 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 10 May 2022 16:50:14 +0200 Subject: [PATCH] GenericDirectUploadService: Use FileTransfer Instead of using SftpTransfer. Change-Id: I0732e1472efe3db10291078319b23211973c86d2 Reviewed-by: Christian Kandeler Reviewed-by: Qt CI Bot Reviewed-by: --- .../genericdirectuploadservice.cpp | 37 +++++++++---------- .../remotelinux/genericdirectuploadservice.h | 2 - 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/plugins/remotelinux/genericdirectuploadservice.cpp b/src/plugins/remotelinux/genericdirectuploadservice.cpp index 1281791bbdc..9241f8e8bb9 100644 --- a/src/plugins/remotelinux/genericdirectuploadservice.cpp +++ b/src/plugins/remotelinux/genericdirectuploadservice.cpp @@ -24,14 +24,13 @@ ****************************************************************************/ #include "genericdirectuploadservice.h" +#include "linuxdevice.h" #include -#include #include +#include #include #include -#include -#include #include #include @@ -70,7 +69,7 @@ public: QQueue filesToStat; State state = Inactive; QList filesToUpload; - SftpTransferPtr uploader; + std::unique_ptr uploader; QList deployableFiles; }; @@ -251,11 +250,7 @@ void GenericDirectUploadService::setFinished() it.key()->terminate(); } d->remoteProcs.clear(); - if (d->uploader) { - d->uploader->disconnect(); - d->uploader->stop(); - d->uploader.release()->deleteLater(); - } + d->uploader->stop(); d->filesToUpload.clear(); } @@ -293,11 +288,11 @@ void GenericDirectUploadService::uploadFiles() return; } emit progressMessage(tr("%n file(s) need to be uploaded.", "", d->filesToUpload.size())); - FilesToTransfer filesToTransfer; - for (const DeployableFile &f : qAsConst(d->filesToUpload)) { - if (!f.localFilePath().exists()) { + FilesToTransfer files; + for (const DeployableFile &file : qAsConst(d->filesToUpload)) { + if (!file.localFilePath().exists()) { const QString message = tr("Local file \"%1\" does not exist.") - .arg(f.localFilePath().toUserOutput()); + .arg(file.localFilePath().toUserOutput()); if (d->ignoreMissingFiles) { emit warningMessage(message); continue; @@ -308,13 +303,17 @@ void GenericDirectUploadService::uploadFiles() return; } } - filesToTransfer << FileToTransfer(f.localFilePath().toString(), f.remoteFilePath()); + files.append({file.localFilePath(), + deviceConfiguration()->filePath(file.remoteFilePath())}); } - d->uploader = connection()->createUpload(filesToTransfer); - connect(d->uploader.get(), &SftpTransfer::done, [this](const QString &error) { + LinuxDevice::ConstPtr linuxDevice = deviceConfiguration().dynamicCast(); + QTC_ASSERT(linuxDevice, return); + + d->uploader.reset(linuxDevice->createFileTransfer(files)); + connect(d->uploader.get(), &FileTransfer::done, this, [this](const ProcessResultData &result) { QTC_ASSERT(d->state == Uploading, return); - if (!error.isEmpty()) { - emit errorMessage(error); + if (result.m_error != QProcess::UnknownError) { + emit errorMessage(result.m_errorString); setFinished(); handleDeploymentDone(); return; @@ -323,7 +322,7 @@ void GenericDirectUploadService::uploadFiles() chmod(); queryFiles(); }); - connect(d->uploader.get(), &SftpTransfer::progress, + connect(d->uploader.get(), &FileTransfer::progress, this, &GenericDirectUploadService::progressMessage); d->uploader->start(); } diff --git a/src/plugins/remotelinux/genericdirectuploadservice.h b/src/plugins/remotelinux/genericdirectuploadservice.h index 2dae2516d96..be7eda62610 100644 --- a/src/plugins/remotelinux/genericdirectuploadservice.h +++ b/src/plugins/remotelinux/genericdirectuploadservice.h @@ -28,8 +28,6 @@ #include "abstractremotelinuxdeployservice.h" #include "remotelinux_export.h" -#include - #include QT_FORWARD_DECLARE_CLASS(QDateTime)