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