aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2022-05-04 01:08:51 +0200
committerJarek Kobus <[email protected]>2022-05-04 08:37:06 +0000
commitd79b34d39a7c662e3ed1317ce15523c118c1b568 (patch)
treefed5e5950dae8a7584c185d1611a7d4d926facbd
parent0eea55926f0faa735f3f7422829f5429e9292c83 (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.cpp86
-rw-r--r--src/plugins/boot2qt/qdbmakedefaultappservice.h8
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