From 9e852cb5319f32a78cd466c135a0544fe68a16be Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 28 May 2015 18:28:28 +0200 Subject: Forward standard output and error Change-Id: Ib3acd04688724bec70597e87c27bfbb16555bbd8 Reviewed-by: Nikolai Kosjar --- src/libs/codemodelbackendipc/connectionclient.cpp | 35 ++++++++++++++++------- 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(&QProcess::finished), - this, - &ConnectionClient::restartProcess); - } + connect(process(), + static_cast(&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 process_; -- cgit v1.2.1