From 6830328ecfe0591b33cdcd0aa3d0a36592ba5fdc Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 17 May 2021 11:17:53 +0200 Subject: [PATCH] Utils: Drop SynchronousProcessResponse Move the remnaining two members into QtcProcessPrivate, its only user. Change-Id: I8e0c23e1a56b36b750b5b4bd4e88d762260e42a1 Reviewed-by: Christian Stenger --- src/libs/utils/qtcprocess.cpp | 67 +++++++++++------------------ src/plugins/vcsbase/vcsbaseplugin.h | 5 +-- tests/manual/process/mainwindow.cpp | 4 +- 3 files changed, 29 insertions(+), 47 deletions(-) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index f1b3f26d6b2..0717eecb6bb 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -73,16 +73,6 @@ static Q_LOGGING_CATEGORY(processLog, "qtc.utils.synchronousprocess", QtWarningM static std::function s_remoteRunProcessHook; -/* Result of SynchronousProcess execution */ -class SynchronousProcessResponse -{ -public: - void clear(); - - QtcProcess::Result result = QtcProcess::StartFailed; - int exitCode = -1; -}; - // Data for one channel buffer (stderr/stdout) class ChannelBuffer { @@ -129,7 +119,8 @@ public: QTextCodec *m_codec = QTextCodec::codecForLocale(); QTimer m_timer; QEventLoop m_eventLoop; - SynchronousProcessResponse m_result; + QtcProcess::Result m_result = QtcProcess::StartFailed; + int m_exitCode = -1; FilePath m_binary; ChannelBuffer m_stdOut; ChannelBuffer m_stdErr; @@ -149,7 +140,8 @@ void QtcProcessPrivate::clearForRun() m_stdOut.codec = m_codec; m_stdErr.clearForRun(); m_stdErr.codec = m_codec; - m_result.clear(); + m_result = QtcProcess::StartFailed; + m_exitCode = -1; m_startFailure = false; m_binary = {}; } @@ -472,17 +464,17 @@ QString QtcProcess::normalizeNewlines(const QString &text) QtcProcess::Result QtcProcess::result() const { - return d->m_result.result; + return d->m_result; } void QtcProcess::setResult(Result result) { - d->m_result.result = result; + d->m_result = result; } int QtcProcess::exitCode() const { - return d->m_result.exitCode; + return d->m_exitCode; } @@ -599,13 +591,6 @@ QString QtcProcess::locateBinary(const QString &binary) as this will cause event loop problems. */ -// ----------- SynchronousProcessResponse -void SynchronousProcessResponse::clear() -{ - result = QtcProcess::StartFailed; - exitCode = -1; -} - QString QtcProcess::exitMessage() { const QString fullCmd = commandLine().toUserOutput(); @@ -677,7 +662,7 @@ QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &r) { QDebug nsp = str.nospace(); nsp << "QtcProcess: result=" - << r.d->m_result.result << " ex=" << r.exitCode() << '\n' + << r.d->m_result << " ex=" << r.exitCode() << '\n' << r.d->m_stdOut.rawData.size() << " bytes stdout, stderr=" << r.d->m_stdErr.rawData << '\n'; return str; } @@ -801,8 +786,8 @@ void QtcProcess::run(const CommandLine &cmd) waitForFinished(); - d->m_result.result = QtcProcess::Finished; - d->m_result.exitCode = exitCode(); + d->m_result = QtcProcess::Finished; + d->m_exitCode = exitCode(); d->m_stdOut.rawData += readAllStandardOutput(); d->m_stdErr.rawData += readAllStandardError(); return; @@ -859,8 +844,8 @@ void QtcProcess::runBlocking(const CommandLine &cmd) waitForFinished(); - d->m_result.result = QtcProcess::Finished; - d->m_result.exitCode = exitCode(); + d->m_result = QtcProcess::Finished; + d->m_exitCode = exitCode(); d->m_stdOut.rawData += readAllStandardOutput(); d->m_stdErr.rawData += readAllStandardError(); return; @@ -876,12 +861,12 @@ void QtcProcess::runBlocking(const CommandLine &cmd) setCommand(cmd); start(); if (!waitForStarted(d->m_maxHangTimerCount * 1000)) { - d->m_result.result = QtcProcess::StartFailed; + d->m_result = QtcProcess::StartFailed; return; } closeWriteChannel(); if (!waitForFinished(d->m_maxHangTimerCount * 1000)) { - d->m_result.result = QtcProcess::Hang; + d->m_result = QtcProcess::Hang; terminate(); if (!waitForFinished(1000)) { kill(); @@ -892,12 +877,12 @@ void QtcProcess::runBlocking(const CommandLine &cmd) if (state() != QProcess::NotRunning) return; - d->m_result.exitCode = exitCode(); - if (d->m_result.result == QtcProcess::StartFailed) { + d->m_exitCode = exitCode(); + if (d->m_result == QtcProcess::StartFailed) { if (exitStatus() != QProcess::NormalExit) - d->m_result.result = QtcProcess::TerminatedAbnormally; + d->m_result = QtcProcess::TerminatedAbnormally; else - d->m_result.result = d->interpretExitCode(d->m_result.exitCode); + d->m_result = d->interpretExitCode(d->m_exitCode); } d->m_stdOut.append(readAllStandardOutput(), false); d->m_stdErr.append(readAllStandardError(), false); @@ -923,7 +908,7 @@ void QtcProcessPrivate::slotTimeout() m_waitingForUser = false; if (terminate) { q->stopProcess(); - m_result.result = QtcProcess::Hang; + m_result = QtcProcess::Hang; } else { m_hangTimerCount = 0; } @@ -941,14 +926,14 @@ void QtcProcessPrivate::slotFinished(int exitCode, QProcess::ExitStatus e) switch (e) { case QProcess::NormalExit: - m_result.result = interpretExitCode(exitCode); - m_result.exitCode = exitCode; + m_result = interpretExitCode(exitCode); + m_exitCode = exitCode; break; case QProcess::CrashExit: // Was hang detected before and killed? - if (m_result.result != QtcProcess::Hang) - m_result.result = QtcProcess::TerminatedAbnormally; - m_result.exitCode = -1; + if (m_result != QtcProcess::Hang) + m_result = QtcProcess::TerminatedAbnormally; + m_exitCode = -1; break; } m_eventLoop.quit(); @@ -960,8 +945,8 @@ void QtcProcessPrivate::slotError(QProcess::ProcessError e) if (debug) qDebug() << Q_FUNC_INFO << e; // Was hang detected before and killed? - if (m_result.result != QtcProcess::Hang) - m_result.result = QtcProcess::StartFailed; + if (m_result != QtcProcess::Hang) + m_result = QtcProcess::StartFailed; m_startFailure = true; m_eventLoop.quit(); } diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h index b441f106228..9afc4c109fe 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.h +++ b/src/plugins/vcsbase/vcsbaseplugin.h @@ -33,8 +33,6 @@ #include -#include - #include QT_BEGIN_NAMESPACE @@ -43,8 +41,7 @@ class QTextCodec; QT_END_NAMESPACE namespace Utils { -class CommandLine; -class SynchronousProcessResponse; +class Environment; } // namespace Utils namespace Core { diff --git a/tests/manual/process/mainwindow.cpp b/tests/manual/process/mainwindow.cpp index 9791ce082c3..cbe2aa03ac7 100644 --- a/tests/manual/process/mainwindow.cpp +++ b/tests/manual/process/mainwindow.cpp @@ -57,6 +57,6 @@ void MainWindow::test() qDebug() << "Async: " << cmd << args; process.setStdOutCallback([this](const QString &s) { append(s); }); process.setStdErrCallback([this](const QString &s) { append(s); }); - const Utils::SynchronousProcessResponse resp = process.run({cmd, args}); - qDebug() << resp; + process.run({cmd, args}); + qDebug() << process; }