forked from qt-creator/qt-creator
Process: Change signature of setReaperTimeout()
Change the arg to std::chrono::milliseconds type. Change-Id: I7b79fc318e2fd06971148038a31fecd4c1805a79 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -258,7 +258,7 @@ void CallerHandle::start(const QString &program, const QStringList &arguments)
|
|||||||
p.lowPriority = m_setup->m_lowPriority;
|
p.lowPriority = m_setup->m_lowPriority;
|
||||||
p.unixTerminalDisabled = m_setup->m_unixTerminalDisabled;
|
p.unixTerminalDisabled = m_setup->m_unixTerminalDisabled;
|
||||||
p.useCtrlCStub = m_setup->m_useCtrlCStub;
|
p.useCtrlCStub = m_setup->m_useCtrlCStub;
|
||||||
p.reaperTimeout = m_setup->m_reaperTimeout;
|
p.reaperTimeout = m_setup->m_reaperTimeout.count();
|
||||||
p.createConsoleOnWindows = m_setup->m_createConsoleOnWindows;
|
p.createConsoleOnWindows = m_setup->m_createConsoleOnWindows;
|
||||||
sendPacket(p);
|
sendPacket(p);
|
||||||
}
|
}
|
||||||
|
@@ -1396,12 +1396,12 @@ QVariantHash Process::extraData() const
|
|||||||
return d->m_setup.m_extraData;
|
return d->m_setup.m_extraData;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Process::setReaperTimeout(int msecs)
|
void Process::setReaperTimeout(milliseconds timeout)
|
||||||
{
|
{
|
||||||
d->m_setup.m_reaperTimeout = msecs;
|
d->m_setup.m_reaperTimeout = timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Process::reaperTimeout() const
|
milliseconds Process::reaperTimeout() const
|
||||||
{
|
{
|
||||||
return d->m_setup.m_reaperTimeout;
|
return d->m_setup.m_reaperTimeout;
|
||||||
}
|
}
|
||||||
|
@@ -127,8 +127,8 @@ public:
|
|||||||
void setExtraData(const QVariantHash &extraData);
|
void setExtraData(const QVariantHash &extraData);
|
||||||
QVariantHash extraData() const;
|
QVariantHash extraData() const;
|
||||||
|
|
||||||
void setReaperTimeout(int msecs);
|
void setReaperTimeout(std::chrono::milliseconds timeout);
|
||||||
int reaperTimeout() const;
|
std::chrono::milliseconds reaperTimeout() const;
|
||||||
|
|
||||||
static void setRemoteProcessHooks(const DeviceProcessHooks &hooks);
|
static void setRemoteProcessHooks(const DeviceProcessHooks &hooks);
|
||||||
|
|
||||||
|
@@ -85,7 +85,7 @@ public:
|
|||||||
QString m_standardInputFile;
|
QString m_standardInputFile;
|
||||||
QString m_nativeArguments; // internal, dependent on specific code path
|
QString m_nativeArguments; // internal, dependent on specific code path
|
||||||
|
|
||||||
int m_reaperTimeout = 500; // in ms
|
std::chrono::milliseconds m_reaperTimeout{500};
|
||||||
bool m_abortOnMetaChars = true;
|
bool m_abortOnMetaChars = true;
|
||||||
bool m_runAsRoot = false;
|
bool m_runAsRoot = false;
|
||||||
bool m_lowPriority = false;
|
bool m_lowPriority = false;
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
|
using namespace std::chrono;
|
||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -66,7 +68,7 @@ static QString execWithArguments(QProcess *process)
|
|||||||
struct ReaperSetup
|
struct ReaperSetup
|
||||||
{
|
{
|
||||||
QProcess *m_process = nullptr;
|
QProcess *m_process = nullptr;
|
||||||
int m_timeoutMs;
|
milliseconds m_timeoutMs;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Reaper : public QObject
|
class Reaper : public QObject
|
||||||
@@ -233,7 +235,7 @@ ProcessReaper::~ProcessReaper()
|
|||||||
m_thread.wait();
|
m_thread.wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessReaper::reap(QProcess *process, int timeoutMs)
|
void ProcessReaper::reap(QProcess *process, milliseconds timeout)
|
||||||
{
|
{
|
||||||
if (!process)
|
if (!process)
|
||||||
return;
|
return;
|
||||||
@@ -254,7 +256,7 @@ void ProcessReaper::reap(QProcess *process, int timeoutMs)
|
|||||||
ProcessReaperPrivate *priv = instance()->m_private;
|
ProcessReaperPrivate *priv = instance()->m_private;
|
||||||
|
|
||||||
process->moveToThread(priv->thread());
|
process->moveToThread(priv->thread());
|
||||||
ReaperSetup reaperSetup {process, timeoutMs};
|
ReaperSetup reaperSetup{process, timeout};
|
||||||
priv->scheduleReap(reaperSetup);
|
priv->scheduleReap(reaperSetup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -20,7 +20,8 @@ class QTCREATOR_UTILS_EXPORT ProcessReaper final
|
|||||||
: public SingletonWithOptionalDependencies<ProcessReaper>
|
: public SingletonWithOptionalDependencies<ProcessReaper>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void reap(QProcess *process, int timeoutMs = 500);
|
static void reap(QProcess *process,
|
||||||
|
std::chrono::milliseconds timeout = std::chrono::milliseconds(500));
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ProcessReaper();
|
ProcessReaper();
|
||||||
|
@@ -42,18 +42,20 @@ static Q_LOGGING_CATEGORY(androidRunWorkerLog, "qtc.android.run.androidrunnerwor
|
|||||||
static const int GdbTempFileMaxCounter = 20;
|
static const int GdbTempFileMaxCounter = 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace std::placeholders;
|
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace std::chrono_literals;
|
||||||
|
using namespace std::placeholders;
|
||||||
|
|
||||||
namespace Android {
|
namespace Android {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
static const QString pidPollingScript = QStringLiteral("while [ -d /proc/%1 ]; do sleep 1; done");
|
static const QString pidPollingScript = QStringLiteral("while [ -d /proc/%1 ]; do sleep 1; done");
|
||||||
static const QRegularExpression userIdPattern("u(\\d+)_a");
|
static const QRegularExpression userIdPattern("u(\\d+)_a");
|
||||||
|
|
||||||
static const int s_jdbTimeout = 5000;
|
static const std::chrono::milliseconds s_jdbTimeout = 5s;
|
||||||
|
|
||||||
static int APP_START_TIMEOUT = 45000;
|
static int APP_START_TIMEOUT = 45000;
|
||||||
static bool isTimedOut(const chrono::high_resolution_clock::time_point &start,
|
static bool isTimedOut(const chrono::high_resolution_clock::time_point &start,
|
||||||
@@ -785,7 +787,7 @@ void AndroidRunnerWorker::handleJdbSettled()
|
|||||||
m_jdbProcess->write(QString("%1\n").arg(command));
|
m_jdbProcess->write(QString("%1\n").arg(command));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_jdbProcess->waitForFinished(s_jdbTimeout)) {
|
if (!m_jdbProcess->waitForFinished(s_jdbTimeout.count())) {
|
||||||
m_jdbProcess.reset();
|
m_jdbProcess.reset();
|
||||||
} else if (m_jdbProcess->exitStatus() == QProcess::NormalExit && m_jdbProcess->exitCode() == 0) {
|
} else if (m_jdbProcess->exitStatus() == QProcess::NormalExit && m_jdbProcess->exitCode() == 0) {
|
||||||
qCDebug(androidRunWorkerLog) << "JDB settled";
|
qCDebug(androidRunWorkerLog) << "JDB settled";
|
||||||
|
@@ -596,7 +596,7 @@ IosDeviceToolHandlerPrivate::IosDeviceToolHandlerPrivate(const IosDeviceType &de
|
|||||||
qCDebug(toolHandlerLog) << "IosToolHandler runEnv:" << env.toStringList();
|
qCDebug(toolHandlerLog) << "IosToolHandler runEnv:" << env.toStringList();
|
||||||
process->setEnvironment(env);
|
process->setEnvironment(env);
|
||||||
process->setProcessMode(ProcessMode::Writer);
|
process->setProcessMode(ProcessMode::Writer);
|
||||||
process->setReaperTimeout(1500);
|
process->setReaperTimeout(std::chrono::milliseconds(1500));
|
||||||
|
|
||||||
QObject::connect(process.get(), &Process::readyReadStandardOutput,
|
QObject::connect(process.get(), &Process::readyReadStandardOutput,
|
||||||
q, [this] { subprocessHasData(); });
|
q, [this] { subprocessHasData(); });
|
||||||
|
@@ -274,7 +274,7 @@ void LauncherSocketHandler::removeProcess(quintptr token)
|
|||||||
|
|
||||||
ProcessWithToken *process = it.value();
|
ProcessWithToken *process = it.value();
|
||||||
m_processes.erase(it);
|
m_processes.erase(it);
|
||||||
ProcessReaper::reap(process, process->reaperTimeout());
|
ProcessReaper::reap(process, std::chrono::milliseconds(process->reaperTimeout()));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
Reference in New Issue
Block a user