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.unixTerminalDisabled = m_setup->m_unixTerminalDisabled;
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;
sendPacket(p);
}

View File

@@ -1396,12 +1396,12 @@ QVariantHash Process::extraData() const
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;
}

View File

@@ -127,8 +127,8 @@ public:
void setExtraData(const QVariantHash &extraData);
QVariantHash extraData() const;
void setReaperTimeout(int msecs);
int reaperTimeout() const;
void setReaperTimeout(std::chrono::milliseconds timeout);
std::chrono::milliseconds reaperTimeout() const;
static void setRemoteProcessHooks(const DeviceProcessHooks &hooks);

View File

@@ -85,7 +85,7 @@ public:
QString m_standardInputFile;
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_runAsRoot = false;
bool m_lowPriority = false;

View File

@@ -16,6 +16,8 @@
using namespace Utils;
using namespace std::chrono;
namespace Utils {
namespace Internal {
@@ -66,7 +68,7 @@ static QString execWithArguments(QProcess *process)
struct ReaperSetup
{
QProcess *m_process = nullptr;
int m_timeoutMs;
milliseconds m_timeoutMs;
};
class Reaper : public QObject
@@ -233,7 +235,7 @@ ProcessReaper::~ProcessReaper()
m_thread.wait();
}
void ProcessReaper::reap(QProcess *process, int timeoutMs)
void ProcessReaper::reap(QProcess *process, milliseconds timeout)
{
if (!process)
return;
@@ -254,7 +256,7 @@ void ProcessReaper::reap(QProcess *process, int timeoutMs)
ProcessReaperPrivate *priv = instance()->m_private;
process->moveToThread(priv->thread());
ReaperSetup reaperSetup {process, timeoutMs};
ReaperSetup reaperSetup{process, timeout};
priv->scheduleReap(reaperSetup);
}

View File

@@ -20,7 +20,8 @@ class QTCREATOR_UTILS_EXPORT ProcessReaper final
: public SingletonWithOptionalDependencies<ProcessReaper>
{
public:
static void reap(QProcess *process, int timeoutMs = 500);
static void reap(QProcess *process,
std::chrono::milliseconds timeout = std::chrono::milliseconds(500));
private:
ProcessReaper();

View File

@@ -42,18 +42,20 @@ static Q_LOGGING_CATEGORY(androidRunWorkerLog, "qtc.android.run.androidrunnerwor
static const int GdbTempFileMaxCounter = 20;
}
using namespace std;
using namespace std::placeholders;
using namespace ProjectExplorer;
using namespace Utils;
using namespace std;
using namespace std::chrono_literals;
using namespace std::placeholders;
namespace Android {
namespace Internal {
static const QString pidPollingScript = QStringLiteral("while [ -d /proc/%1 ]; do sleep 1; done");
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 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));
}
if (!m_jdbProcess->waitForFinished(s_jdbTimeout)) {
if (!m_jdbProcess->waitForFinished(s_jdbTimeout.count())) {
m_jdbProcess.reset();
} else if (m_jdbProcess->exitStatus() == QProcess::NormalExit && m_jdbProcess->exitCode() == 0) {
qCDebug(androidRunWorkerLog) << "JDB settled";

View File

@@ -596,7 +596,7 @@ IosDeviceToolHandlerPrivate::IosDeviceToolHandlerPrivate(const IosDeviceType &de
qCDebug(toolHandlerLog) << "IosToolHandler runEnv:" << env.toStringList();
process->setEnvironment(env);
process->setProcessMode(ProcessMode::Writer);
process->setReaperTimeout(1500);
process->setReaperTimeout(std::chrono::milliseconds(1500));
QObject::connect(process.get(), &Process::readyReadStandardOutput,
q, [this] { subprocessHasData(); });

View File

@@ -274,7 +274,7 @@ void LauncherSocketHandler::removeProcess(quintptr token)
ProcessWithToken *process = it.value();
m_processes.erase(it);
ProcessReaper::reap(process, process->reaperTimeout());
ProcessReaper::reap(process, std::chrono::milliseconds(process->reaperTimeout()));
}
} // namespace Internal