SSH: Streamline SshRemoteProcessRunner's output handling.

Make it just like SshRemoteProcess (and QProcess). The current
implementation annoyingly forces client code to establish additional
signal/slot connections, even if they only want to evaluate the output
at the end.

Change-Id: Id8c30dd156574d7d26d848d8e0705856a16d3747
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Christian Kandeler
2012-06-08 09:42:32 +02:00
committed by hjk
parent 303e67304e
commit 79de09f266
24 changed files with 111 additions and 181 deletions

View File

@@ -62,6 +62,8 @@ public:
QString m_lastConnectionErrorString;
SshRemoteProcess::ExitStatus m_exitStatus;
SshRemoteProcess::Signal m_exitSignal;
QByteArray m_stdout;
QByteArray m_stderr;
int m_exitCode;
QString m_processErrorString;
State m_state;
@@ -187,12 +189,14 @@ void SshRemoteProcessRunner::handleProcessFinished(int exitStatus)
void SshRemoteProcessRunner::handleStdout()
{
emit processOutputAvailable(d->m_process->readAllStandardOutput());
d->m_stdout += d->m_process->readAllStandardOutput();
emit readyReadStandardOutput();
}
void SshRemoteProcessRunner::handleStderr()
{
emit processErrorOutputAvailable(d->m_process->readAllStandardError());
d->m_stderr += d->m_process->readAllStandardError();
emit readyReadStandardError();
}
void SshRemoteProcessRunner::setState(int newState)
@@ -249,6 +253,20 @@ QString SshRemoteProcessRunner::processErrorString() const
return d->m_processErrorString;
}
QByteArray SshRemoteProcessRunner::readAllStandardOutput()
{
const QByteArray data = d->m_stdout;
d->m_stdout.clear();
return data;
}
QByteArray SshRemoteProcessRunner::readAllStandardError()
{
const QByteArray data = d->m_stderr;
d->m_stderr.clear();
return data;
}
void SshRemoteProcessRunner::writeDataToProcess(const QByteArray &data)
{
QSSH_ASSERT(isProcessRunning());