diff options
author | Jarek Kobus <[email protected]> | 2022-05-04 01:08:51 +0200 |
---|---|---|
committer | Jarek Kobus <[email protected]> | 2022-05-04 08:37:06 +0000 |
commit | d79b34d39a7c662e3ed1317ce15523c118c1b568 (patch) | |
tree | fed5e5950dae8a7584c185d1611a7d4d926facbd | |
parent | 0eea55926f0faa735f3f7422829f5429e9292c83 (diff) |
QdbMakeDefaultAppService: Don't use SshRemoteProcessRunner
Use QtcProcess with a path on device instead.
Change-Id: I4ce6d5d1cf42a678de8cc9695c7db782a81b34f9
Reviewed-by: hjk <[email protected]>
-rw-r--r-- | src/plugins/boot2qt/qdbmakedefaultappservice.cpp | 86 | ||||
-rw-r--r-- | src/plugins/boot2qt/qdbmakedefaultappservice.h | 8 |
2 files changed, 28 insertions, 66 deletions
diff --git a/src/plugins/boot2qt/qdbmakedefaultappservice.cpp b/src/plugins/boot2qt/qdbmakedefaultappservice.cpp index 95e5f57ab05..801c77eec72 100644 --- a/src/plugins/boot2qt/qdbmakedefaultappservice.cpp +++ b/src/plugins/boot2qt/qdbmakedefaultappservice.cpp @@ -29,9 +29,10 @@ #include "qdbrunconfiguration.h" #include <projectexplorer/devicesupport/idevice.h> -#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/target.h> -#include <ssh/sshremoteprocessrunner.h> +#include <utils/qtcprocess.h> + +using namespace Utils; namespace Qdb { namespace Internal { @@ -39,62 +40,38 @@ namespace Internal { class QdbMakeDefaultAppServicePrivate { public: - bool makeDefault; - QSsh::SshRemoteProcessRunner *processRunner; + bool m_makeDefault = true; + QtcProcess m_process; }; QdbMakeDefaultAppService::QdbMakeDefaultAppService(QObject *parent) : AbstractRemoteLinuxDeployService(parent), d(new QdbMakeDefaultAppServicePrivate) { - d->processRunner = 0; - d->makeDefault = true; -} - -QdbMakeDefaultAppService::~QdbMakeDefaultAppService() -{ - cleanup(); - delete d; -} + connect(&d->m_process, &QtcProcess::done, this, [this] { + if (d->m_process.error() != QProcess::UnknownError) + emit errorMessage(tr("Remote process failed: %1").arg(d->m_process.errorString())); + else if (d->m_makeDefault) + emit progressMessage(tr("Application set as the default one.")); + else + emit progressMessage(tr("Reset the default application.")); -void QdbMakeDefaultAppService::setMakeDefault(bool makeDefault) -{ - d->makeDefault = makeDefault; + stopDeployment(); + }); + connect(&d->m_process, &QtcProcess::readyReadStandardError, this, [this] { + emit stdErrData(QString::fromUtf8(d->m_process.readAllStandardError())); + }); } -void QdbMakeDefaultAppService::handleStdErr() -{ - emit stdErrData(QString::fromUtf8(d->processRunner->readAllStandardError())); -} +QdbMakeDefaultAppService::~QdbMakeDefaultAppService() = default; -void QdbMakeDefaultAppService::handleProcessFinished() +void QdbMakeDefaultAppService::setMakeDefault(bool makeDefault) { - const QString error = d->processRunner->errorString(); - if (!error.isEmpty()) { - emit errorMessage(tr("Remote process failed: %1").arg(error)); - stopDeployment(); - return; - } - - // FIXME: Check that ignoring is fine - QByteArray processOutput = d->processRunner->readAllStandardOutput(); - - if (d->makeDefault) - emit progressMessage(tr("Application set as the default one.")); - else - emit progressMessage(tr("Reset the default application.")); - - stopDeployment(); + d->m_makeDefault = makeDefault; } void QdbMakeDefaultAppService::doDeploy() { - d->processRunner = new QSsh::SshRemoteProcessRunner; - connect(d->processRunner, &QSsh::SshRemoteProcessRunner::finished, - this, &QdbMakeDefaultAppService::handleProcessFinished); - connect(d->processRunner, &QSsh::SshRemoteProcessRunner::readyReadStandardError, - this, &QdbMakeDefaultAppService::handleStdErr); - QString remoteExe; if (ProjectExplorer::RunConfiguration *rc = target()->activeRunConfiguration()) { @@ -102,28 +79,19 @@ void QdbMakeDefaultAppService::doDeploy() remoteExe = exeAspect->executable().toString(); } - QString command = Constants::AppcontrollerFilepath; - command += d->makeDefault && !remoteExe.isEmpty() ? QStringLiteral(" --make-default ") + remoteExe - : QStringLiteral(" --remove-default"); - - d->processRunner->run(command, deviceConfiguration()->sshParameters()); + const QString args = d->m_makeDefault && !remoteExe.isEmpty() + ? QStringLiteral("--make-default ") + remoteExe + : QStringLiteral("--remove-default"); + d->m_process.setCommand( + {deviceConfiguration()->mapToGlobalPath(Constants::AppcontrollerFilepath), {args}}); + d->m_process.start(); } void QdbMakeDefaultAppService::stopDeployment() { - cleanup(); + d->m_process.close(); handleDeploymentDone(); } -void QdbMakeDefaultAppService::cleanup() -{ - if (d->processRunner) { - disconnect(d->processRunner, 0, this, 0); - d->processRunner->cancel(); - delete d->processRunner; - d->processRunner = 0; - } -} - } // namespace Internal } // namespace Qdb diff --git a/src/plugins/boot2qt/qdbmakedefaultappservice.h b/src/plugins/boot2qt/qdbmakedefaultappservice.h index f66ee0fc808..bf1bcfda1f0 100644 --- a/src/plugins/boot2qt/qdbmakedefaultappservice.h +++ b/src/plugins/boot2qt/qdbmakedefaultappservice.h @@ -41,17 +41,11 @@ public: void setMakeDefault(bool makeDefault); private: - void handleStdErr(); - void handleProcessFinished(); - bool isDeploymentNecessary() const final { return true; } - void doDeploy() final; void stopDeployment() final; - void cleanup(); - - QdbMakeDefaultAppServicePrivate * const d; + std::unique_ptr<QdbMakeDefaultAppServicePrivate> d; }; } // namespace Internal |