summaryrefslogtreecommitdiffstats
path: root/app.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'app.cpp')
-rw-r--r--app.cpp118
1 files changed, 0 insertions, 118 deletions
diff --git a/app.cpp b/app.cpp
deleted file mode 100644
index 29bd05e..0000000
--- a/app.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-#include "app.h"
-
-#include <QProcess>
-#include <QProcessEnvironment>
-#include <QDebug>
-
-App::App(QObject *parent)
- : QObject(parent)
- , mProcess(new QProcess(this))
- , mEnv(new QProcessEnvironment(QProcessEnvironment::systemEnvironment()))
- , mPid(0)
-{
- mProcess->setProcessChannelMode(QProcess::SeparateChannels);
-
- connect(mProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError(QProcess::ProcessError)));
- connect(mProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus)));
- connect(mProcess, SIGNAL(readyReadStandardError()), this, SLOT(processStderr()));
- connect(mProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(processStdout()));
- connect(mProcess, SIGNAL(started()), this, SLOT(processStarted()));
-}
-
-App::~App()
-{
- delete mEnv;
-}
-
-void App::start(const QString &binary, const QStringList &args)
-{
- stop();
- mProcess->setProcessEnvironment(*mEnv);
- mProcess->start(binary, args);
-}
-
-void App::stop()
-{
- if (mProcess->state() == QProcess::NotRunning)
- return;
-
- mProcess->terminate();
- if (!mProcess->waitForFinished()) {
- mProcess->kill();
- if (!mProcess->waitForFinished()) {
- emit error("Could not kill");
- }
- }
-}
-
-void App::debug()
-{
- emit error("Debugging not implemented.");
-}
-
-void App::addEnv(const QString &key, const QString &value)
-{
- mEnv->insert(key, value);
-}
-
-void App::delEnv(const QString &key)
-{
- mEnv->remove(key);
-}
-
-void App::write(const QByteArray &data)
-{
- if (mProcess->state() == QProcess::Running)
- mProcess->write(data);
- else
- emit error("Could not write input: Process not running.");
-}
-
-void App::processError(QProcess::ProcessError err)
-{
- switch ( err ) {
- case QProcess::FailedToStart:
- emit error("Process failed to start.");
- break;
- case QProcess::Crashed:
- // no error
- // will be handled by: processFinished(...)
- break;
- case QProcess::Timedout: emit error("Last waitFor... timed out."); break;
- case QProcess::WriteError: emit error("Error during write to process."); break;
- case QProcess::ReadError: emit error("Error during read from process."); break;
- case QProcess::UnknownError: emit error("Process had an unknown error."); break;
- }
-}
-
-void App::processFinished(int exitCode, QProcess::ExitStatus exitStatus)
-{
- if (exitStatus == QProcess::NormalExit) {
- qDebug() << "Process exited with exitcode" << exitCode;
- } else {
- qDebug() << "Process crashed";
- }
- emit stopped(mPid, exitStatus, exitCode);
-}
-
-void App::processStderr()
-{
- QByteArray out = mProcess->readAllStandardError();
- if (!out.isEmpty())
- emit stdErr(mPid, out);
-}
-
-void App::processStdout()
-{
- QByteArray out = mProcess->readAllStandardOutput();
- if (!out.isEmpty())
- emit stdOut(mPid, out);
-}
-
-void App::processStarted()
-{
- mPid = mProcess->pid();
- emit started(mPid);
- qDebug() << "Process started";
-}
-