aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2022-10-07 01:49:31 +0200
committerselsta <selsta@sent.at>2022-10-07 02:28:44 +0200
commit80ade41905cff40eef94e27d39f14f41e887c96d (patch)
treef039b95585b3f7d4f9e0f59c2732b2c346cbcb94 /src
parentaef4a982dc644b3e971a89c8b65dd57d21d5e085 (diff)
downloadmonzero-gui-80ade41905cff40eef94e27d39f14f41e887c96d.tar.gz
monzero-gui-80ade41905cff40eef94e27d39f14f41e887c96d.tar.xz
monzero-gui-80ade41905cff40eef94e27d39f14f41e887c96d.zip
DaemonManager: take dataDir into account when sending cmd
Diffstat (limited to 'src')
-rw-r--r--src/daemon/DaemonManager.cpp43
-rw-r--r--src/daemon/DaemonManager.h14
2 files changed, 31 insertions, 26 deletions
diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp
index ad8bab16..6a5a8233 100644
--- a/src/daemon/DaemonManager.cpp
+++ b/src/daemon/DaemonManager.cpp
@@ -130,8 +130,8 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
}
// Start start watcher
- m_scheduler.run([this, nettype, noSync] {
- if (startWatcher(nettype)) {
+ m_scheduler.run([this, nettype, dataDir, noSync] {
+ if (startWatcher(nettype, dataDir)) {
emit daemonStarted();
m_noSync = noSync;
} else {
@@ -142,13 +142,13 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
return true;
}
-void DaemonManager::stopAsync(NetworkType::Type nettype, const QJSValue& callback)
+void DaemonManager::stopAsync(NetworkType::Type nettype, const QString &dataDir, const QJSValue& callback)
{
- const auto feature = m_scheduler.run([this, nettype] {
+ const auto feature = m_scheduler.run([this, nettype, dataDir] {
QString message;
- sendCommand({"exit"}, nettype, message);
+ sendCommand({"exit"}, nettype, dataDir, message);
- return QJSValueList({stopWatcher(nettype)});
+ return QJSValueList({stopWatcher(nettype, dataDir)});
}, callback);
if (!feature.first)
@@ -157,14 +157,14 @@ void DaemonManager::stopAsync(NetworkType::Type nettype, const QJSValue& callbac
}
}
-bool DaemonManager::startWatcher(NetworkType::Type nettype) const
+bool DaemonManager::startWatcher(NetworkType::Type nettype, const QString &dataDir) const
{
// Check if daemon is started every 2 seconds
QElapsedTimer timer;
timer.start();
while(true && !m_app_exit && timer.elapsed() / 1000 < DAEMON_START_TIMEOUT_SECONDS ) {
QThread::sleep(2);
- if(!running(nettype)) {
+ if(!running(nettype, dataDir)) {
qDebug() << "daemon not running. checking again in 2 seconds.";
} else {
qDebug() << "daemon is started. Waiting 5 seconds to let daemon catch up";
@@ -175,14 +175,14 @@ bool DaemonManager::startWatcher(NetworkType::Type nettype) const
return false;
}
-bool DaemonManager::stopWatcher(NetworkType::Type nettype) const
+bool DaemonManager::stopWatcher(NetworkType::Type nettype, const QString &dataDir) const
{
// Check if daemon is running every 2 seconds. Kill if still running after 10 seconds
int counter = 0;
while(true && !m_app_exit) {
QThread::sleep(2);
counter++;
- if(running(nettype)) {
+ if(running(nettype, dataDir)) {
qDebug() << "Daemon still running. " << counter;
if(counter >= 5) {
qDebug() << "Killing it! ";
@@ -236,10 +236,10 @@ void DaemonManager::printError()
}
}
-bool DaemonManager::running(NetworkType::Type nettype) const
+bool DaemonManager::running(NetworkType::Type nettype, const QString &dataDir) const
{
QString status;
- sendCommand({"sync_info"}, nettype, status);
+ sendCommand({"sync_info"}, nettype, dataDir, status);
qDebug() << status;
return status.contains("Height:");
}
@@ -249,14 +249,14 @@ bool DaemonManager::noSync() const noexcept
return m_noSync;
}
-void DaemonManager::runningAsync(NetworkType::Type nettype, const QJSValue& callback) const
+void DaemonManager::runningAsync(NetworkType::Type nettype, const QString &dataDir, const QJSValue& callback) const
{
- m_scheduler.run([this, nettype] {
- return QJSValueList({running(nettype)});
+ m_scheduler.run([this, nettype, dataDir] {
+ return QJSValueList({running(nettype, dataDir)});
}, callback);
}
-bool DaemonManager::sendCommand(const QStringList &cmd, NetworkType::Type nettype, QString &message) const
+bool DaemonManager::sendCommand(const QStringList &cmd, NetworkType::Type nettype, const QString &dataDir, QString &message) const
{
QProcess p;
QStringList external_cmd(cmd);
@@ -267,6 +267,11 @@ bool DaemonManager::sendCommand(const QStringList &cmd, NetworkType::Type nettyp
else if (nettype == NetworkType::STAGENET)
external_cmd << "--stagenet";
+ // Custom data-dir
+ if (!dataDir.isEmpty()) {
+ external_cmd << "--data-dir" << dataDir;
+ }
+
qDebug() << "sending external cmd: " << external_cmd;
@@ -278,11 +283,11 @@ bool DaemonManager::sendCommand(const QStringList &cmd, NetworkType::Type nettyp
return started;
}
-void DaemonManager::sendCommandAsync(const QStringList &cmd, NetworkType::Type nettype, const QJSValue& callback) const
+void DaemonManager::sendCommandAsync(const QStringList &cmd, NetworkType::Type nettype, const QString &dataDir, const QJSValue& callback) const
{
- m_scheduler.run([this, cmd, nettype] {
+ m_scheduler.run([this, cmd, nettype, dataDir] {
QString message;
- return QJSValueList({sendCommand(cmd, nettype, message)});
+ return QJSValueList({sendCommand(cmd, nettype, dataDir, message)});
}, callback);
}
diff --git a/src/daemon/DaemonManager.h b/src/daemon/DaemonManager.h
index 2f884665..5a48a489 100644
--- a/src/daemon/DaemonManager.h
+++ b/src/daemon/DaemonManager.h
@@ -48,23 +48,23 @@ public:
~DaemonManager();
Q_INVOKABLE bool start(const QString &flags, NetworkType::Type nettype, const QString &dataDir = "", const QString &bootstrapNodeAddress = "", bool noSync = false, bool pruneBlockchain = false);
- Q_INVOKABLE void stopAsync(NetworkType::Type nettype, const QJSValue& callback);
+ Q_INVOKABLE void stopAsync(NetworkType::Type nettype, const QString &dataDir, const QJSValue& callback);
Q_INVOKABLE bool noSync() const noexcept;
// return true if daemon process is started
- Q_INVOKABLE void runningAsync(NetworkType::Type nettype, const QJSValue& callback) const;
+ Q_INVOKABLE void runningAsync(NetworkType::Type nettype, const QString &dataDir, const QJSValue& callback) const;
// Send daemon command from qml and prints output in console window.
- Q_INVOKABLE void sendCommandAsync(const QStringList &cmd, NetworkType::Type nettype, const QJSValue& callback) const;
+ Q_INVOKABLE void sendCommandAsync(const QStringList &cmd, NetworkType::Type nettype, const QString &dataDir, const QJSValue& callback) const;
Q_INVOKABLE void exit();
Q_INVOKABLE QVariantMap validateDataDir(const QString &dataDir) const;
Q_INVOKABLE bool checkLmdbExists(QString datadir);
private:
- bool running(NetworkType::Type nettype) const;
- bool sendCommand(const QStringList &cmd, NetworkType::Type nettype, QString &message) const;
- bool startWatcher(NetworkType::Type nettype) const;
- bool stopWatcher(NetworkType::Type nettype) const;
+ bool running(NetworkType::Type nettype, const QString &dataDir) const;
+ bool sendCommand(const QStringList &cmd, NetworkType::Type nettype, const QString &dataDir, QString &message) const;
+ bool startWatcher(NetworkType::Type nettype, const QString &dataDir) const;
+ bool stopWatcher(NetworkType::Type nettype, const QString &dataDir) const;
signals:
void daemonStarted() const;
void daemonStopped() const;