diff options
author | Marco Bubke <marco.bubke@theqtcompany.com> | 2015-05-28 18:28:28 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-06-01 11:55:00 +0000 |
commit | 9e852cb5319f32a78cd466c135a0544fe68a16be (patch) | |
tree | aa073dfad10760a1b90421101c0e732b9c827c35 | |
parent | 696b5a014232b13e7cf7165028e976dda1baaa6e (diff) | |
download | qt-creator-9e852cb5319f32a78cd466c135a0544fe68a16be.tar.gz |
Forward standard output and error
Change-Id: Ib3acd04688724bec70597e87c27bfbb16555bbd8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-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_; |