Maemo: Improve progress reporting of remote process start and shutdown.

This commit is contained in:
ck
2010-08-10 15:59:37 +02:00
parent 1c746014af
commit fcd4680761
6 changed files with 24 additions and 6 deletions

View File

@@ -90,6 +90,7 @@ void MaemoRemoteMounter::unmount()
m_mountSpecs.at(i).remoteMountPoint); m_mountSpecs.at(i).remoteMountPoint);
} }
emit reportProgress(tr("Unmounting remote mount points..."));
m_umountStderr.clear(); m_umountStderr.clear();
m_unmountProcess = m_connection->createRemoteProcess(remoteCall.toUtf8()); m_unmountProcess = m_connection->createRemoteProcess(remoteCall.toUtf8());
connect(m_unmountProcess.data(), SIGNAL(closed(int)), this, connect(m_unmountProcess.data(), SIGNAL(closed(int)), this,
@@ -157,6 +158,7 @@ void MaemoRemoteMounter::stop()
void MaemoRemoteMounter::deployUtfsClient() void MaemoRemoteMounter::deployUtfsClient()
{ {
emit reportProgress(tr("Setting up SFTP connection..."));
m_utfsClientUploader = m_connection->createSftpChannel(); m_utfsClientUploader = m_connection->createSftpChannel();
connect(m_utfsClientUploader.data(), SIGNAL(initialized()), this, connect(m_utfsClientUploader.data(), SIGNAL(initialized()), this,
SLOT(handleUploaderInitialized())); SLOT(handleUploaderInitialized()));
@@ -178,14 +180,14 @@ void MaemoRemoteMounter::handleUploaderInitialized()
if (m_stop) if (m_stop)
return; return;
emit reportProgress(tr("Uploading UTFS client..."));
connect(m_utfsClientUploader.data(), connect(m_utfsClientUploader.data(),
SIGNAL(finished(Core::SftpJobId, QString)), this, SIGNAL(finished(Core::SftpJobId, QString)), this,
SLOT(handleUploadFinished(Core::SftpJobId, QString))); SLOT(handleUploadFinished(Core::SftpJobId, QString)));
const QString localFile const QString localFile
= m_toolChain->maddeRoot() + QLatin1String("/madlib/armel/utfs-client"); = m_toolChain->maddeRoot() + QLatin1String("/madlib/armel/utfs-client");
m_uploadJobId m_uploadJobId = m_utfsClientUploader->uploadFile(localFile,
= m_utfsClientUploader->uploadFile(localFile, utfsClientOnDevice(), utfsClientOnDevice(), SftpOverwriteExisting);
SftpOverwriteExisting);
if (m_uploadJobId == SftpInvalidJob) if (m_uploadJobId == SftpInvalidJob)
emit error(tr("Could not upload UTFS client (%1).").arg(localFile)); emit error(tr("Could not upload UTFS client (%1).").arg(localFile));
} }
@@ -231,6 +233,7 @@ void MaemoRemoteMounter::startUtfsClients()
remoteCall += andOp + mkdir + andOp + chmod + andOp + utfsClient; remoteCall += andOp + mkdir + andOp + chmod + andOp + utfsClient;
} }
emit reportProgress(tr("Starting remote UTFS clients..."));
m_utfsClientStderr.clear(); m_utfsClientStderr.clear();
m_mountProcess = m_connection->createRemoteProcess(remoteCall.toUtf8()); m_mountProcess = m_connection->createRemoteProcess(remoteCall.toUtf8());
connect(m_mountProcess.data(), SIGNAL(started()), this, connect(m_mountProcess.data(), SIGNAL(started()), this,
@@ -281,6 +284,7 @@ void MaemoRemoteMounter::handleUtfsClientsFinished(int exitStatus)
void MaemoRemoteMounter::startUtfsServers() void MaemoRemoteMounter::startUtfsServers()
{ {
emit reportProgress(tr("Starting UTFS servers..."));
for (int i = 0; i < m_mountSpecs.count(); ++i) { for (int i = 0; i < m_mountSpecs.count(); ++i) {
const MaemoMountSpecification &mountSpec = m_mountSpecs.at(i); const MaemoMountSpecification &mountSpec = m_mountSpecs.at(i);
const ProcPtr utfsServerProc(new QProcess); const ProcPtr utfsServerProc(new QProcess);

View File

@@ -70,6 +70,7 @@ signals:
void mounted(); void mounted();
void unmounted(); void unmounted();
void error(const QString &reason); void error(const QString &reason);
void reportProgress(const QString &progressOutput);
private slots: private slots:
void handleUploaderInitialized(); void handleUploaderInitialized();

View File

@@ -72,7 +72,6 @@ void MaemoRunControl::start()
if (!m_devConfig.isValid()) { if (!m_devConfig.isValid()) {
handleError(tr("No device configuration set for run configuration.")); handleError(tr("No device configuration set for run configuration."));
} else { } else {
emit appendMessage(this, tr("Preparing remote side ..."), false);
m_running = true; m_running = true;
emit started(); emit started();
disconnect(m_runner, 0, this, 0); disconnect(m_runner, 0, this, 0);
@@ -88,6 +87,8 @@ void MaemoRunControl::start()
SLOT(handleRemoteProcessStarted())); SLOT(handleRemoteProcessStarted()));
connect(m_runner, SIGNAL(remoteProcessFinished(int)), this, connect(m_runner, SIGNAL(remoteProcessFinished(int)), this,
SLOT(handleRemoteProcessFinished(int))); SLOT(handleRemoteProcessFinished(int)));
connect(m_runner, SIGNAL(reportProgress(QString)), this,
SLOT(handleProgressReport(QString)));
m_runner->start(); m_runner->start();
} }
} }
@@ -132,6 +133,11 @@ void MaemoRunControl::handleRemoteErrorOutput(const QByteArray &output)
emit addToOutputWindowInline(this, QString::fromUtf8(output), true); emit addToOutputWindowInline(this, QString::fromUtf8(output), true);
} }
void MaemoRunControl::handleProgressReport(const QString &progressString)
{
emit appendMessage(this, progressString, false);
}
bool MaemoRunControl::isRunning() const bool MaemoRunControl::isRunning() const
{ {
return m_running; return m_running;

View File

@@ -60,6 +60,7 @@ private slots:
void handleRemoteProcessFinished(int exitCode); void handleRemoteProcessFinished(int exitCode);
void handleRemoteOutput(const QByteArray &output); void handleRemoteOutput(const QByteArray &output);
void handleRemoteErrorOutput(const QByteArray &output); void handleRemoteErrorOutput(const QByteArray &output);
void handleProgressReport(const QString &progressString);
private: private:
virtual void start(); virtual void start();

View File

@@ -66,6 +66,8 @@ MaemoSshRunner::MaemoSshRunner(QObject *parent,
connect(m_mounter, SIGNAL(unmounted()), this, SLOT(handleUnmounted())); connect(m_mounter, SIGNAL(unmounted()), this, SLOT(handleUnmounted()));
connect(m_mounter, SIGNAL(error(QString)), this, connect(m_mounter, SIGNAL(error(QString)), this,
SLOT(handleMounterError(QString))); SLOT(handleMounterError(QString)));
connect(m_mounter, SIGNAL(reportProgress(QString)), this,
SIGNAL(reportProgress(QString)));
} }
MaemoSshRunner::~MaemoSshRunner() {} MaemoSshRunner::~MaemoSshRunner() {}
@@ -96,10 +98,12 @@ void MaemoSshRunner::start()
SLOT(handleConnected())); SLOT(handleConnected()));
connect(m_connection.data(), SIGNAL(error(SshError)), this, connect(m_connection.data(), SIGNAL(error(SshError)), this,
SLOT(handleConnectionFailure())); SLOT(handleConnectionFailure()));
if (reUse) if (reUse) {
handleConnected(); handleConnected();
else } else {
emit reportProgress(tr("Connecting to device..."));
m_connection->connectToHost(m_devConfig.server); m_connection->connectToHost(m_devConfig.server);
}
} }
void MaemoSshRunner::stop() void MaemoSshRunner::stop()
@@ -131,6 +135,7 @@ void MaemoSshRunner::handleConnectionFailure()
void MaemoSshRunner::cleanup(bool initialCleanup) void MaemoSshRunner::cleanup(bool initialCleanup)
{ {
emit reportProgress(tr("Killing remote process(es)..."));
m_shuttingDown = !initialCleanup; m_shuttingDown = !initialCleanup;
QString niceKill; QString niceKill;
QString brutalKill; QString brutalKill;

View File

@@ -73,6 +73,7 @@ signals:
void readyForExecution(); void readyForExecution();
void remoteOutput(const QByteArray &output); void remoteOutput(const QByteArray &output);
void remoteErrorOutput(const QByteArray &output); void remoteErrorOutput(const QByteArray &output);
void reportProgress(const QString &progressOutput);
void remoteProcessStarted(); void remoteProcessStarted();
void remoteProcessFinished(int exitCode); void remoteProcessFinished(int exitCode);