diff --git a/TailRunner.cpp b/TailRunner.cpp index 94632ef..a24c70b 100644 --- a/TailRunner.cpp +++ b/TailRunner.cpp @@ -12,14 +12,9 @@ TailRunner::TailRunner(const TailSettings& s, QObject* parent) : QObject(parent) , settings(s) - , pProcess(nullptr) , eCommand(Command::Status) { } -TailRunner::~TailRunner() { - delete pProcess; -} - void TailRunner::checkStatus() { eCommand = Command::Status; runCommand("status", QStringList(), true); @@ -113,12 +108,10 @@ void TailRunner::runCommand(QString cmd, QStringList args, bool jsonResult, bool }); return; } - - delete pProcess; } - pProcess = new QProcess(this); - connect(pProcess, &QProcess::finished, this, [this](int exitCode, QProcess::ExitStatus status) { + pProcess = std::make_unique(this); + connect(pProcess.get(), &QProcess::finished, this, [this](int exitCode, QProcess::ExitStatus status) { qDebug() << "Process exit code " << exitCode << " - " << status; if (exitCode != 0) { @@ -153,11 +146,11 @@ void TailRunner::runCommand(QString cmd, QStringList args, bool jsonResult, bool } }); - connect(pProcess, &QProcess::readyReadStandardOutput, + connect(pProcess.get(), &QProcess::readyReadStandardOutput, this, &TailRunner::onProcessCanReadStdOut); // TODO: @grenis This needs some refactoring - connect(pProcess, &QProcess::readyReadStandardError, + connect(pProcess.get(), &QProcess::readyReadStandardError, this, [this]() { // NOTE! For whatever reason, the login command output is not captured by the readyReadStandardOutput signal // and arrives as a error output, so we need to check for that here. diff --git a/TailRunner.h b/TailRunner.h index d7e4dfa..bbd7239 100644 --- a/TailRunner.h +++ b/TailRunner.h @@ -1,6 +1,8 @@ #ifndef TAILRUNNER_H #define TAILRUNNER_H +#include + #include #include #include @@ -14,7 +16,6 @@ class TailRunner : public QObject Q_OBJECT public: explicit TailRunner(const TailSettings& s, QObject* parent = nullptr); - virtual ~TailRunner(); void checkStatus(); void getAccounts(); @@ -28,7 +29,7 @@ class TailRunner : public QObject private: const TailSettings& settings; - QProcess* pProcess; + std::unique_ptr pProcess; enum class Command { ListAccounts, SwitchAccount,