Utils: Merge QtcProcess and SynchronousProcess

Keep SynchronousProcess as type alias for a transition period.

Change-Id: I2540b6cecc17eb46f40ed57d27589011693728f1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2021-06-22 04:24:13 +02:00
parent cfabd8483b
commit 953ea730b8
4 changed files with 12 additions and 42 deletions

View File

@@ -206,7 +206,6 @@ public:
bool m_startFailure = false; bool m_startFailure = false;
bool m_timeOutMessageBoxEnabled = false; bool m_timeOutMessageBoxEnabled = false;
bool m_waitingForUser = false; bool m_waitingForUser = false;
bool m_isSynchronousProcess = false;
bool m_processUserEvents = false; bool m_processUserEvents = false;
}; };
@@ -252,8 +251,6 @@ QtcProcess::QtcProcess(QObject *parent)
QtcProcess::~QtcProcess() QtcProcess::~QtcProcess()
{ {
disconnect(&d->m_timer, nullptr, this, nullptr);
disconnect(this, nullptr, this, nullptr);
delete d; delete d;
} }
@@ -567,7 +564,7 @@ void QtcProcess::setResult(Result result)
int QtcProcess::exitCode() const int QtcProcess::exitCode() const
{ {
return d->m_isSynchronousProcess ? d->m_exitCode : d->m_process->exitCode(); // FIXME: Unify. return d->m_exitCode;
} }
@@ -946,24 +943,13 @@ void ChannelBuffer::handleRest()
} }
} }
// ----------- SynchronousProcess void QtcProcess::setProcessUserEventWhileRunning()
SynchronousProcess::SynchronousProcess()
{
d->m_isSynchronousProcess = true; // Only for QTC_ASSERTs above.
}
SynchronousProcess::~SynchronousProcess()
{
}
void SynchronousProcess::setProcessUserEventWhileRunning()
{ {
d->m_processUserEvents = true; d->m_processUserEvents = true;
} }
void QtcProcess::setTimeoutS(int timeoutS) void QtcProcess::setTimeoutS(int timeoutS)
{ {
QTC_CHECK(d->m_isSynchronousProcess);
if (timeoutS > 0) if (timeoutS > 0)
d->m_maxHangTimerCount = qMax(2, timeoutS); d->m_maxHangTimerCount = qMax(2, timeoutS);
else else
@@ -978,7 +964,6 @@ void QtcProcess::setCodec(QTextCodec *c)
void QtcProcess::setTimeOutMessageBoxEnabled(bool v) void QtcProcess::setTimeOutMessageBoxEnabled(bool v)
{ {
QTC_CHECK(d->m_isSynchronousProcess);
d->m_timeOutMessageBoxEnabled = v; d->m_timeOutMessageBoxEnabled = v;
} }
@@ -989,7 +974,6 @@ void QtcProcess::setExitCodeInterpreter(const ExitCodeInterpreter &interpreter)
void QtcProcess::setWriteData(const QByteArray &writeData) void QtcProcess::setWriteData(const QByteArray &writeData)
{ {
QTC_CHECK(d->m_isSynchronousProcess);
d->m_writeData = writeData; d->m_writeData = writeData;
} }
@@ -1002,7 +986,6 @@ static bool isGuiThread()
void SynchronousProcess::runBlocking() void SynchronousProcess::runBlocking()
{ {
QTC_CHECK(d->m_isSynchronousProcess);
// FIXME: Implement properly // FIXME: Implement properly
if (d->m_commandLine.executable().needsDevice()) { if (d->m_commandLine.executable().needsDevice()) {
@@ -1073,7 +1056,6 @@ void SynchronousProcess::runBlocking()
void QtcProcess::setStdOutCallback(const std::function<void (const QString &)> &callback) void QtcProcess::setStdOutCallback(const std::function<void (const QString &)> &callback)
{ {
QTC_CHECK(d->m_isSynchronousProcess);
d->m_stdOut.outputCallback = callback; d->m_stdOut.outputCallback = callback;
d->m_stdOut.emitSingleLines = false; d->m_stdOut.emitSingleLines = false;
d->m_stdOut.emitSingleLines = false; d->m_stdOut.emitSingleLines = false;
@@ -1089,7 +1071,6 @@ void QtcProcess::setStdOutLineCallback(const std::function<void (const QString &
void QtcProcess::setStdErrCallback(const std::function<void (const QString &)> &callback) void QtcProcess::setStdErrCallback(const std::function<void (const QString &)> &callback)
{ {
QTC_CHECK(d->m_isSynchronousProcess);
d->m_stdErr.outputCallback = callback; d->m_stdErr.outputCallback = callback;
d->m_stdErr.emitSingleLines = false; d->m_stdErr.emitSingleLines = false;
d->m_stdErr.keepRawData = false; d->m_stdErr.keepRawData = false;

View File

@@ -98,6 +98,12 @@ public:
void terminate(); void terminate();
void interrupt(); void interrupt();
// Starts the command and waits for finish. User input processing depends
// on whether setProcessUserEventWhileRunning was called.
void runBlocking();
// This starts a nested event loop when running the command.
void setProcessUserEventWhileRunning(); // Avoid.
/* Timeout for hanging processes (triggers after no more output /* Timeout for hanging processes (triggers after no more output
* occurs on stderr/stdout). */ * occurs on stderr/stdout). */
void setTimeoutS(int timeoutS); void setTimeoutS(int timeoutS);
@@ -186,7 +192,6 @@ signals:
void readyReadStandardError(); void readyReadStandardError();
private: private:
friend class SynchronousProcess;
friend QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &r); friend QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &r);
Internal::QtcProcessPrivate *d = nullptr; Internal::QtcProcessPrivate *d = nullptr;
@@ -204,22 +209,6 @@ using ExitCodeInterpreter = std::function<QtcProcess::Result(int /*exitCode*/)>;
QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &); QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &);
class QTCREATOR_UTILS_EXPORT SynchronousProcess : public QtcProcess using SynchronousProcess = QtcProcess; // FIXME: Remove.
{
Q_OBJECT
public:
SynchronousProcess();
~SynchronousProcess() override;
// Force the use of 'runBlocking' for now.
void start() = delete;
// This starts a nested event loop when running the command.
void setProcessUserEventWhileRunning(); // Avoid.
// Starts the command and waits for finish. User input processing depends
// on whether setProcessUserEventWhileRunning was called.
void runBlocking();
};
} // namespace Utils } // namespace Utils

View File

@@ -184,7 +184,7 @@ bool CMakeTool::isValid() const
return m_introspection->m_didRun && !m_introspection->m_fileApis.isEmpty(); return m_introspection->m_didRun && !m_introspection->m_fileApis.isEmpty();
} }
void CMakeTool::runCMake(SynchronousProcess &cmake, const QStringList &args, int timeoutS) const void CMakeTool::runCMake(QtcProcess &cmake, const QStringList &args, int timeoutS) const
{ {
cmake.setTimeoutS(timeoutS); cmake.setTimeoutS(timeoutS);
cmake.setDisableUnixTerminal(); cmake.setDisableUnixTerminal();

View File

@@ -33,7 +33,7 @@
#include <utils/id.h> #include <utils/id.h>
#include <utils/optional.h> #include <utils/optional.h>
namespace Utils { class SynchronousProcess; } namespace Utils { class QtcProcess; }
namespace CMakeProjectManager { namespace CMakeProjectManager {
@@ -112,7 +112,7 @@ public:
private: private:
void readInformation() const; void readInformation() const;
void runCMake(Utils::SynchronousProcess &proc, const QStringList &args, int timeoutS = 1) const; void runCMake(Utils::QtcProcess &proc, const QStringList &args, int timeoutS = 1) const;
void parseFunctionDetailsOutput(const QString &output); void parseFunctionDetailsOutput(const QString &output);
QStringList parseVariableOutput(const QString &output); QStringList parseVariableOutput(const QString &output);