diff options
-rw-r--r-- | src/libs/codemodelbackendipc/connectionclient.cpp | 35 | ||||
-rw-r--r-- | src/libs/codemodelbackendipc/connectionclient.h | 3 |
2 files changed, 27 insertions, 11 deletions
diff --git a/src/libs/codemodelbackendipc/connectionclient.cpp b/src/libs/codemodelbackendipc/connectionclient.cpp index 251cbc7a6c..2b7ef49a97 100644 --- a/src/libs/codemodelbackendipc/connectionclient.cpp +++ b/src/libs/codemodelbackendipc/connectionclient.cpp @@ -111,8 +111,8 @@ void ConnectionClient::setProcessAliveTimerInterval(int processTimerInterval) void ConnectionClient::startProcess() { if (!isProcessIsRunning()) { - process()->setProcessChannelMode(QProcess::ForwardedErrorChannel); - process()->setReadChannel(QProcess::StandardOutput); + connectProcessFinished(); + connectStandardOutputAndError(); process()->start(processPath(), {connectionName()}); process()->waitForStarted(); processAliveTimer.start(); @@ -177,6 +177,16 @@ void ConnectionClient::printLocalSocketError(QLocalSocket::LocalSocketError /*so qWarning() << "ClangCodeModel ConnectionClient LocalSocket Error:" << localSocket.errorString(); } +void ConnectionClient::printStandardOutput() +{ + qWarning() << "CodeModelBackEnd:" << process_->readAllStandardOutput(); +} + +void ConnectionClient::printStandardError() +{ + qWarning() << "CodeModelBackEnd Error:" << process_->readAllStandardError(); +} + void ConnectionClient::finishProcess() { processAliveTimer.stop(); @@ -214,22 +224,19 @@ bool ConnectionClient::isProcessIsRunning() const QProcess *ConnectionClient::process() const { - if (!process_) { + if (!process_) process_.reset(new QProcess); - connectProcessFinished(); - } return process_.get(); } void ConnectionClient::connectProcessFinished() const { - if (process_) { - connect(process_.get(), - static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), - this, - &ConnectionClient::restartProcess); - } + connect(process(), + static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), + this, + &ConnectionClient::restartProcess); + } void ConnectionClient::disconnectProcessFinished() const @@ -242,6 +249,12 @@ void ConnectionClient::disconnectProcessFinished() const } } +void ConnectionClient::connectStandardOutputAndError() const +{ + connect(process(), &QProcess::readyReadStandardOutput, this, &ConnectionClient::printStandardOutput); + connect(process(), &QProcess::readyReadStandardError, this, &ConnectionClient::printStandardError); +} + const QString &ConnectionClient::processPath() const { return processPath_; diff --git a/src/libs/codemodelbackendipc/connectionclient.h b/src/libs/codemodelbackendipc/connectionclient.h index ba6031b35a..e118db7116 100644 --- a/src/libs/codemodelbackendipc/connectionclient.h +++ b/src/libs/codemodelbackendipc/connectionclient.h @@ -88,10 +88,13 @@ private: void terminateProcess(); void killProcess(); void printLocalSocketError(QLocalSocket::LocalSocketError socketError); + void printStandardOutput(); + void printStandardError(); QProcess *process() const; void connectProcessFinished() const; void disconnectProcessFinished() const; + void connectStandardOutputAndError() const; private: mutable std::unique_ptr<QProcess> process_; |