forked from qt-creator/qt-creator
SSH: Make API of SshRemoteProcess more similar to the one of QProcess.
In the end, we want to derive it from QIODevice as well. Change-Id: I30e7cb23ec8e5753c363d1f4457b650556860ac2 Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
This commit is contained in:
@@ -103,12 +103,11 @@ void SshRemoteProcess::init()
|
||||
{
|
||||
connect(d, SIGNAL(started()), this, SIGNAL(started()),
|
||||
Qt::QueuedConnection);
|
||||
connect(d, SIGNAL(outputAvailable(QByteArray)), this,
|
||||
SIGNAL(outputAvailable(QByteArray)), Qt::QueuedConnection);
|
||||
connect(d, SIGNAL(errorOutputAvailable(QByteArray)), this,
|
||||
SIGNAL(errorOutputAvailable(QByteArray)), Qt::QueuedConnection);
|
||||
connect(d, SIGNAL(closed(int)), this, SIGNAL(closed(int)),
|
||||
connect(d, SIGNAL(readyReadStandardOutput()), this, SIGNAL(readyReadStandardOutput()),
|
||||
Qt::QueuedConnection);
|
||||
connect(d, SIGNAL(readyReadStandardError()), this,
|
||||
SIGNAL(readyReadStandardError()), Qt::QueuedConnection);
|
||||
connect(d, SIGNAL(closed(int)), this, SIGNAL(closed(int)), Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void SshRemoteProcess::addToEnvironment(const QByteArray &var, const QByteArray &value)
|
||||
@@ -168,6 +167,9 @@ int SshRemoteProcess::exitCode() const { return d->m_exitCode; }
|
||||
|
||||
QByteArray SshRemoteProcess::exitSignal() const { return d->m_signal; }
|
||||
|
||||
QByteArray SshRemoteProcess::readAllStandardOutput() { return d->readAllStandardOutput(); }
|
||||
QByteArray SshRemoteProcess::readAllStandardError() { return d->readAllStandardError(); }
|
||||
|
||||
namespace Internal {
|
||||
|
||||
SshRemoteProcessPrivate::SshRemoteProcessPrivate(const QByteArray &command,
|
||||
@@ -212,6 +214,20 @@ void SshRemoteProcessPrivate::setProcState(ProcessState newState)
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray SshRemoteProcessPrivate::readAllStandardOutput()
|
||||
{
|
||||
const QByteArray data = m_stdout;
|
||||
m_stdout.clear();
|
||||
return data;
|
||||
}
|
||||
|
||||
QByteArray SshRemoteProcessPrivate::readAllStandardError()
|
||||
{
|
||||
const QByteArray data = m_stderr;
|
||||
m_stderr.clear();
|
||||
return data;
|
||||
}
|
||||
|
||||
void SshRemoteProcessPrivate::closeHook()
|
||||
{
|
||||
if (m_wasRunning) {
|
||||
@@ -268,16 +284,19 @@ void SshRemoteProcessPrivate::handleChannelFailure()
|
||||
|
||||
void SshRemoteProcessPrivate::handleChannelDataInternal(const QByteArray &data)
|
||||
{
|
||||
emit outputAvailable(data);
|
||||
m_stdout += data;
|
||||
emit readyReadStandardOutput();
|
||||
}
|
||||
|
||||
void SshRemoteProcessPrivate::handleChannelExtendedDataInternal(quint32 type,
|
||||
const QByteArray &data)
|
||||
{
|
||||
if (type != SSH_EXTENDED_DATA_STDERR)
|
||||
if (type != SSH_EXTENDED_DATA_STDERR) {
|
||||
qWarning("Unknown extended data type %u", type);
|
||||
else
|
||||
emit errorOutputAvailable(data);
|
||||
} else {
|
||||
m_stderr += data;
|
||||
emit readyReadStandardError();
|
||||
}
|
||||
}
|
||||
|
||||
void SshRemoteProcessPrivate::handleExitStatus(const SshChannelExitStatus &exitStatus)
|
||||
|
||||
Reference in New Issue
Block a user