Hide RemoteLinuxKillAppService

There is not need to export this class as it's not used
outside. Rename RemoteLinuxKillAppStep into KillAppStep,
as the "RemoteLinux" prefix is redundant inside RemoteLinux
plugin.

Change-Id: I46800c84fd326bb0631b77e48243443d79bc2fb2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2022-05-26 15:10:06 +02:00
parent 49ab0e0dda
commit faa9ddbcfd
9 changed files with 163 additions and 240 deletions

View File

@@ -13,6 +13,7 @@ add_qtc_plugin(RemoteLinux
genericlinuxdeviceconfigurationwizard.cpp genericlinuxdeviceconfigurationwizard.h genericlinuxdeviceconfigurationwizard.cpp genericlinuxdeviceconfigurationwizard.h
genericlinuxdeviceconfigurationwizardpages.cpp genericlinuxdeviceconfigurationwizardpages.h genericlinuxdeviceconfigurationwizardpages.cpp genericlinuxdeviceconfigurationwizardpages.h
genericlinuxdeviceconfigurationwizardsetuppage.ui genericlinuxdeviceconfigurationwizardsetuppage.ui
killappstep.cpp killappstep.h
linuxdevice.cpp linuxdevice.h linuxdevice.cpp linuxdevice.h
linuxdevicetester.cpp linuxdevicetester.h linuxdevicetester.cpp linuxdevicetester.h
linuxprocessinterface.h linuxprocessinterface.h
@@ -29,8 +30,6 @@ add_qtc_plugin(RemoteLinux
remotelinuxenvironmentaspect.cpp remotelinuxenvironmentaspect.h remotelinuxenvironmentaspect.cpp remotelinuxenvironmentaspect.h
remotelinuxenvironmentaspectwidget.cpp remotelinuxenvironmentaspectwidget.h remotelinuxenvironmentaspectwidget.cpp remotelinuxenvironmentaspectwidget.h
remotelinuxenvironmentreader.cpp remotelinuxenvironmentreader.h remotelinuxenvironmentreader.cpp remotelinuxenvironmentreader.h
remotelinuxkillappservice.cpp remotelinuxkillappservice.h
remotelinuxkillappstep.cpp remotelinuxkillappstep.h
remotelinuxpackageinstaller.cpp remotelinuxpackageinstaller.h remotelinuxpackageinstaller.cpp remotelinuxpackageinstaller.h
remotelinuxplugin.cpp remotelinuxplugin.h remotelinuxplugin.cpp remotelinuxplugin.h
remotelinuxqmltoolingsupport.cpp remotelinuxqmltoolingsupport.h remotelinuxqmltoolingsupport.cpp remotelinuxqmltoolingsupport.h

View File

@@ -0,0 +1,153 @@
/****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "killappstep.h"
#include "remotelinux_constants.h"
#include <projectexplorer/devicesupport/idevice.h>
#include <projectexplorer/runcontrol.h>
#include <projectexplorer/target.h>
#include <utils/qtcassert.h>
using namespace ProjectExplorer;
using namespace Utils;
namespace RemoteLinux {
namespace Internal {
class KillAppService : public AbstractRemoteLinuxDeployService
{
Q_OBJECT
public:
~KillAppService() override;
void setRemoteExecutable(const QString &filePath);
private:
void handleStdErr();
void handleProcessFinished();
bool isDeploymentNecessary() const override;
void doDeploy() override;
void stopDeployment() override;
void handleSignalOpFinished(const QString &errorMessage);
void cleanup();
void finishDeployment();
QString m_remoteExecutable;
ProjectExplorer::DeviceProcessSignalOperation::Ptr m_signalOperation;
};
KillAppService::~KillAppService()
{
cleanup();
}
void KillAppService::setRemoteExecutable(const QString &filePath)
{
m_remoteExecutable = filePath;
}
bool KillAppService::isDeploymentNecessary() const
{
return !m_remoteExecutable.isEmpty();
}
void KillAppService::doDeploy()
{
m_signalOperation = deviceConfiguration()->signalOperation();
if (!m_signalOperation) {
handleDeploymentDone();
return;
}
connect(m_signalOperation.data(), &ProjectExplorer::DeviceProcessSignalOperation::finished,
this, &KillAppService::handleSignalOpFinished);
emit progressMessage(tr("Trying to kill \"%1\" on remote device...").arg(m_remoteExecutable));
m_signalOperation->killProcess(m_remoteExecutable);
}
void KillAppService::cleanup()
{
if (m_signalOperation) {
disconnect(m_signalOperation.data(), nullptr, this, nullptr);
m_signalOperation.clear();
}
}
void KillAppService::finishDeployment()
{
cleanup();
handleDeploymentDone();
}
void KillAppService::stopDeployment()
{
finishDeployment();
}
void KillAppService::handleSignalOpFinished(const QString &errorMessage)
{
if (errorMessage.isEmpty())
emit progressMessage(tr("Remote application killed."));
else
emit progressMessage(tr("Failed to kill remote application. Assuming it was not running."));
finishDeployment();
}
} // namespace Internal
KillAppStep::KillAppStep(BuildStepList *bsl, Id id)
: AbstractRemoteLinuxDeployStep(bsl, id)
{
auto service = createDeployService<Internal::KillAppService>();
setWidgetExpandedByDefault(false);
setInternalInitializer([this, service] {
Target * const theTarget = target();
QTC_ASSERT(theTarget, return CheckResult::failure());
RunConfiguration * const rc = theTarget->activeRunConfiguration();
const QString remoteExe = rc ? rc->runnable().command.executable().toString() : QString();
service->setRemoteExecutable(remoteExe);
return CheckResult::success();
});
}
Id KillAppStep::stepId()
{
return Constants::KillAppStepId;
}
QString KillAppStep::displayName()
{
return tr("Kill current application instance");
}
} // namespace RemoteLinux
#include "killappstep.moc"

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2017 The Qt Company Ltd. ** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of Qt Creator. ** This file is part of Qt Creator.
@@ -29,11 +29,11 @@
namespace RemoteLinux { namespace RemoteLinux {
class REMOTELINUX_EXPORT RemoteLinuxKillAppStep : public AbstractRemoteLinuxDeployStep class REMOTELINUX_EXPORT KillAppStep : public AbstractRemoteLinuxDeployStep
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit RemoteLinuxKillAppStep(ProjectExplorer::BuildStepList *bsl, explicit KillAppStep(ProjectExplorer::BuildStepList *bsl,
Utils::Id id = stepId()); Utils::Id id = stepId());
static Utils::Id stepId(); static Utils::Id stepId();

View File

@@ -34,6 +34,8 @@ Project {
"genericlinuxdeviceconfigurationwizardpages.cpp", "genericlinuxdeviceconfigurationwizardpages.cpp",
"genericlinuxdeviceconfigurationwizardpages.h", "genericlinuxdeviceconfigurationwizardpages.h",
"genericlinuxdeviceconfigurationwizardsetuppage.ui", "genericlinuxdeviceconfigurationwizardsetuppage.ui",
"killappstep.cpp",
"killappstep.h",
"linuxdevice.cpp", "linuxdevice.cpp",
"linuxdevice.h", "linuxdevice.h",
"linuxdevicetester.cpp", "linuxdevicetester.cpp",
@@ -62,10 +64,6 @@ Project {
"remotelinuxenvironmentaspectwidget.h", "remotelinuxenvironmentaspectwidget.h",
"remotelinuxenvironmentreader.cpp", "remotelinuxenvironmentreader.cpp",
"remotelinuxenvironmentreader.h", "remotelinuxenvironmentreader.h",
"remotelinuxkillappservice.cpp",
"remotelinuxkillappservice.h",
"remotelinuxkillappstep.cpp",
"remotelinuxkillappstep.h",
"remotelinuxpackageinstaller.cpp", "remotelinuxpackageinstaller.cpp",
"remotelinuxpackageinstaller.h", "remotelinuxpackageinstaller.h",
"remotelinuxplugin.cpp", "remotelinuxplugin.cpp",

View File

@@ -28,7 +28,7 @@
#include "genericdirectuploadstep.h" #include "genericdirectuploadstep.h"
#include "makeinstallstep.h" #include "makeinstallstep.h"
#include "remotelinuxcheckforfreediskspacestep.h" #include "remotelinuxcheckforfreediskspacestep.h"
#include "remotelinuxkillappstep.h" #include "killappstep.h"
#include "remotelinux_constants.h" #include "remotelinux_constants.h"
#include "rsyncdeploystep.h" #include "rsyncdeploystep.h"
@@ -77,7 +77,7 @@ RemoteLinuxDeployConfigurationFactory::RemoteLinuxDeployConfigurationFactory()
addInitialStep(MakeInstallStep::stepId(), needsMakeInstall); addInitialStep(MakeInstallStep::stepId(), needsMakeInstall);
addInitialStep(RemoteLinuxCheckForFreeDiskSpaceStep::stepId()); addInitialStep(RemoteLinuxCheckForFreeDiskSpaceStep::stepId());
addInitialStep(RemoteLinuxKillAppStep::stepId()); addInitialStep(KillAppStep::stepId());
addInitialStep(RsyncDeployStep::stepId(), [](Target *target) { addInitialStep(RsyncDeployStep::stepId(), [](Target *target) {
auto device = DeviceKitAspect::device(target->kit()); auto device = DeviceKitAspect::device(target->kit());
return device && device->extraData(Constants::SupportsRSync).toBool(); return device && device->extraData(Constants::SupportsRSync).toBool();

View File

@@ -1,103 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "remotelinuxkillappservice.h"
#include <projectexplorer/devicesupport/idevice.h>
#include <utils/fileutils.h>
namespace RemoteLinux {
namespace Internal {
class RemoteLinuxKillAppServicePrivate
{
public:
QString remoteExecutable;
ProjectExplorer::DeviceProcessSignalOperation::Ptr signalOp;
};
} // namespace Internal
RemoteLinuxKillAppService::RemoteLinuxKillAppService()
: d(new Internal::RemoteLinuxKillAppServicePrivate)
{
}
RemoteLinuxKillAppService::~RemoteLinuxKillAppService()
{
cleanup();
delete d;
}
void RemoteLinuxKillAppService::setRemoteExecutable(const QString &filePath)
{
d->remoteExecutable = filePath;
}
bool RemoteLinuxKillAppService::isDeploymentNecessary() const
{
return !d->remoteExecutable.isEmpty();
}
void RemoteLinuxKillAppService::doDeploy()
{
d->signalOp = deviceConfiguration()->signalOperation();
if (!d->signalOp) {
handleDeploymentDone();
return;
}
connect(d->signalOp.data(), &ProjectExplorer::DeviceProcessSignalOperation::finished,
this, &RemoteLinuxKillAppService::handleSignalOpFinished);
emit progressMessage(tr("Trying to kill \"%1\" on remote device...").arg(d->remoteExecutable));
d->signalOp->killProcess(d->remoteExecutable);
}
void RemoteLinuxKillAppService::cleanup()
{
if (d->signalOp) {
disconnect(d->signalOp.data(), nullptr, this, nullptr);
d->signalOp.clear();
}
}
void RemoteLinuxKillAppService::finishDeployment()
{
cleanup();
handleDeploymentDone();
}
void RemoteLinuxKillAppService::stopDeployment()
{
finishDeployment();
}
void RemoteLinuxKillAppService::handleSignalOpFinished(const QString &errorMessage)
{
if (errorMessage.isEmpty())
emit progressMessage(tr("Remote application killed."));
else
emit progressMessage(tr("Failed to kill remote application. Assuming it was not running."));
finishDeployment();
}
} // namespace RemoteLinux

View File

@@ -1,58 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once
#include "abstractremotelinuxdeployservice.h"
namespace RemoteLinux {
namespace Internal { class RemoteLinuxKillAppServicePrivate; }
class REMOTELINUX_EXPORT RemoteLinuxKillAppService : public AbstractRemoteLinuxDeployService
{
Q_OBJECT
public:
RemoteLinuxKillAppService();
~RemoteLinuxKillAppService() override;
void setRemoteExecutable(const QString &filePath);
private:
void handleStdErr();
void handleProcessFinished();
bool isDeploymentNecessary() const override;
void doDeploy() override;
void stopDeployment() override;
void handleSignalOpFinished(const QString &errorMessage);
void cleanup();
void finishDeployment();
Internal::RemoteLinuxKillAppServicePrivate * const d;
};
} // namespace RemoteLinux

View File

@@ -1,66 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "remotelinuxkillappstep.h"
#include "remotelinux_constants.h"
#include "remotelinuxkillappservice.h"
#include <projectexplorer/runcontrol.h>
#include <projectexplorer/target.h>
#include <utils/qtcassert.h>
using namespace ProjectExplorer;
namespace RemoteLinux {
RemoteLinuxKillAppStep::RemoteLinuxKillAppStep(BuildStepList *bsl, Utils::Id id)
: AbstractRemoteLinuxDeployStep(bsl, id)
{
auto service = createDeployService<RemoteLinuxKillAppService>();
setWidgetExpandedByDefault(false);
setInternalInitializer([this, service] {
Target * const theTarget = target();
QTC_ASSERT(theTarget, return CheckResult::failure());
RunConfiguration * const rc = theTarget->activeRunConfiguration();
const QString remoteExe = rc ? rc->runnable().command.executable().toString() : QString();
service->setRemoteExecutable(remoteExe);
return CheckResult::success();
});
}
Utils::Id RemoteLinuxKillAppStep::stepId()
{
return Constants::KillAppStepId;
}
QString RemoteLinuxKillAppStep::displayName()
{
return tr("Kill current application instance");
}
} // namespace RemoteLinux

View File

@@ -38,7 +38,7 @@
#include "remotelinuxcheckforfreediskspacestep.h" #include "remotelinuxcheckforfreediskspacestep.h"
#include "remotelinuxdeployconfiguration.h" #include "remotelinuxdeployconfiguration.h"
#include "remotelinuxcustomcommanddeploymentstep.h" #include "remotelinuxcustomcommanddeploymentstep.h"
#include "remotelinuxkillappstep.h" #include "killappstep.h"
#include "rsyncdeploystep.h" #include "rsyncdeploystep.h"
#include "tarpackagecreationstep.h" #include "tarpackagecreationstep.h"
#include "uploadandinstalltarpackagestep.h" #include "uploadandinstalltarpackagestep.h"
@@ -83,7 +83,7 @@ public:
customCommandDeploymentStepFactory; customCommandDeploymentStepFactory;
GenericDeployStepFactory<RemoteLinuxCheckForFreeDiskSpaceStep> GenericDeployStepFactory<RemoteLinuxCheckForFreeDiskSpaceStep>
checkForFreeDiskSpaceStepFactory; checkForFreeDiskSpaceStepFactory;
GenericDeployStepFactory<RemoteLinuxKillAppStep> remoteLinuxKillAppStepFactory; GenericDeployStepFactory<KillAppStep> killAppStepFactory;
GenericDeployStepFactory<MakeInstallStep> makeInstallStepFactory; GenericDeployStepFactory<MakeInstallStep> makeInstallStepFactory;
const QList<Utils::Id> supportedRunConfigs { const QList<Utils::Id> supportedRunConfigs {