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:
Jarek Kobus
2024-01-22 20:29:40 +01:00
parent e98f6e31e7
commit 665beaead9
9 changed files with 22 additions and 17 deletions

View File

@@ -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);
} }

View File

@@ -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;
} }

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);
} }

View File

@@ -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();

View File

@@ -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";

View File

@@ -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(); });

View File

@@ -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