GenericDirectUploadService: Replace DynamicSetup with dynamic task setup

Change-Id: Ic9befb63b51101803aef48911ae1d54a87eb98da
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2023-01-20 09:22:11 +01:00
parent ad0fcc60d2
commit 7dd2fe689d

View File

@@ -29,7 +29,6 @@ const int MaxConcurrentStatCalls = 10;
struct UploadStorage struct UploadStorage
{ {
QList<DeployableFile> filesToUpload; QList<DeployableFile> filesToUpload;
FilesToTransfer filesToTransfer;
}; };
class GenericDirectUploadServicePrivate class GenericDirectUploadServicePrivate
@@ -46,7 +45,7 @@ public:
StatEndHandler statEndHandler); StatEndHandler statEndHandler);
TaskItem statTree(const TreeStorage<UploadStorage> &storage, FilesToStat filesToStat, TaskItem statTree(const TreeStorage<UploadStorage> &storage, FilesToStat filesToStat,
StatEndHandler statEndHandler); StatEndHandler statEndHandler);
TaskItem uploadGroup(const TreeStorage<UploadStorage> &storage); TaskItem uploadTask(const TreeStorage<UploadStorage> &storage);
TaskItem chmodTask(const DeployableFile &file); TaskItem chmodTask(const DeployableFile &file);
TaskItem chmodTree(const TreeStorage<UploadStorage> &storage); TaskItem chmodTree(const TreeStorage<UploadStorage> &storage);
@@ -186,12 +185,12 @@ TaskItem GenericDirectUploadServicePrivate::statTree(const TreeStorage<UploadSto
return Tree(setupHandler); return Tree(setupHandler);
} }
TaskItem GenericDirectUploadServicePrivate::uploadGroup(const TreeStorage<UploadStorage> &storage) TaskItem GenericDirectUploadServicePrivate::uploadTask(const TreeStorage<UploadStorage> &storage)
{ {
const auto groupSetupHandler = [=] { const auto setupHandler = [this, storage](FileTransfer &transfer) {
if (storage->filesToUpload.isEmpty()) { if (storage->filesToUpload.isEmpty()) {
emit q->progressMessage(Tr::tr("No files need to be uploaded.")); emit q->progressMessage(Tr::tr("No files need to be uploaded."));
return GroupConfig{GroupAction::StopWithDone}; return TaskAction::StopWithDone;
} }
emit q->progressMessage(Tr::tr("%n file(s) need to be uploaded.", "", emit q->progressMessage(Tr::tr("%n file(s) need to be uploaded.", "",
storage->filesToUpload.size())); storage->filesToUpload.size()));
@@ -205,33 +204,25 @@ TaskItem GenericDirectUploadServicePrivate::uploadGroup(const TreeStorage<Upload
continue; continue;
} }
emit q->errorMessage(message); emit q->errorMessage(message);
return GroupConfig{GroupAction::StopWithError}; return TaskAction::StopWithError;
} }
files.append({file.localFilePath(), files.append({file.localFilePath(),
q->deviceConfiguration()->filePath(file.remoteFilePath())}); q->deviceConfiguration()->filePath(file.remoteFilePath())});
} }
storage->filesToTransfer = files; if (files.isEmpty()) {
if (storage->filesToTransfer.isEmpty()) {
emit q->progressMessage(Tr::tr("No files need to be uploaded.")); emit q->progressMessage(Tr::tr("No files need to be uploaded."));
return GroupConfig{GroupAction::StopWithDone}; return TaskAction::StopWithDone;
} }
return GroupConfig(); transfer.setFilesToTransfer(files);
};
const auto setupHandler = [this, storage](FileTransfer &transfer) {
transfer.setFilesToTransfer(storage->filesToTransfer);
QObject::connect(&transfer, &FileTransfer::progress, QObject::connect(&transfer, &FileTransfer::progress,
q, &GenericDirectUploadService::progressMessage); q, &GenericDirectUploadService::progressMessage);
return TaskAction::Continue;
}; };
const auto errorHandler = [this](const FileTransfer &transfer) { const auto errorHandler = [this](const FileTransfer &transfer) {
emit q->errorMessage(transfer.resultData().m_errorString); emit q->errorMessage(transfer.resultData().m_errorString);
}; };
const Group group { return Transfer(setupHandler, {}, errorHandler);
DynamicSetup(groupSetupHandler),
Transfer(setupHandler, {}, errorHandler)
};
return group;
} }
TaskItem GenericDirectUploadServicePrivate::chmodTask(const DeployableFile &file) TaskItem GenericDirectUploadServicePrivate::chmodTask(const DeployableFile &file)
@@ -310,7 +301,7 @@ Group GenericDirectUploadService::deployRecipe()
const Group root { const Group root {
Storage(storage), Storage(storage),
d->statTree(storage, preFilesToStat, preStatEndHandler), d->statTree(storage, preFilesToStat, preStatEndHandler),
d->uploadGroup(storage), d->uploadTask(storage),
Group { Group {
d->chmodTree(storage), d->chmodTree(storage),
d->statTree(storage, postFilesToStat, postStatEndHandler) d->statTree(storage, postFilesToStat, postStatEndHandler)