summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@theqtcompany.com>2015-05-28 18:28:28 +0200
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-06-01 11:55:00 +0000
commit9e852cb5319f32a78cd466c135a0544fe68a16be (patch)
treeaa073dfad10760a1b90421101c0e732b9c827c35
parent696b5a014232b13e7cf7165028e976dda1baaa6e (diff)
downloadqt-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.cpp35
-rw-r--r--src/libs/codemodelbackendipc/connectionclient.h3
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_;