diff options
| author | Riccardo Spagni <ric@spagni.net> | 2017-06-04 12:17:58 +0200 |
|---|---|---|
| committer | Riccardo Spagni <ric@spagni.net> | 2017-06-04 12:17:58 +0200 |
| commit | ecaa1a8e2311c43331f377a8baa29d3bc986179d (patch) | |
| tree | 6be6aa6f42b417d0b5698a0a6d5728bdd9aa071d /src | |
| parent | 9e121fb676efe4c1b21aa4fa2d4cab638ce882b6 (diff) | |
| parent | 62e1dc490f7e2b49bcd319e06a36005cc66f01db (diff) | |
| download | monzero-gui-ecaa1a8e2311c43331f377a8baa29d3bc986179d.tar.gz monzero-gui-ecaa1a8e2311c43331f377a8baa29d3bc986179d.tar.xz monzero-gui-ecaa1a8e2311c43331f377a8baa29d3bc986179d.zip | |
Merge pull request #709
62e1dc4 Setttings: blockchain folder location (Jaquee)
9037eed DaemonManager: support dataDir parameter + validator (Jaquee)
Diffstat (limited to 'src')
| -rw-r--r-- | src/daemon/DaemonManager.cpp | 55 | ||||
| -rw-r--r-- | src/daemon/DaemonManager.h | 4 |
2 files changed, 57 insertions, 2 deletions
diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index 5d95b26b..58002014 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -8,6 +8,10 @@ #include <QApplication> #include <QProcess> #include <QTime> +#include <QStorageInfo> +#include <QVariantMap> +#include <QVariant> +#include <QMap> namespace { static const int DAEMON_START_TIMEOUT_SECONDS = 30; @@ -28,7 +32,7 @@ DaemonManager *DaemonManager::instance(const QStringList *args) return m_instance; } -bool DaemonManager::start(const QString &flags, bool testnet) +bool DaemonManager::start(const QString &flags, bool testnet, const QString &dataDir) { // prepare command line arguments and pass to monerod QStringList arguments; @@ -54,8 +58,19 @@ bool DaemonManager::start(const QString &flags, bool testnet) arguments << str; } + // Custom data-dir + if(!dataDir.isEmpty()) { + if(testnet) + arguments << "--testnet-data-dir"; + else + arguments << "--data-dir"; + arguments << dataDir; + } + arguments << "--check-updates" << "disabled"; + + qDebug() << "starting monerod " + m_monerod; qDebug() << "With command line arguments " << arguments; @@ -236,6 +251,44 @@ void DaemonManager::exit() m_app_exit = true; } +QVariantMap DaemonManager::validateDataDir(const QString &dataDir) const +{ + QVariantMap result; + bool valid = true; + bool readOnly = false; + int storageAvailable = 0; + bool lmdbExists = true; + + QStorageInfo storage(dataDir); + if (storage.isValid() && storage.isReady()) { + if (storage.isReadOnly()) { + readOnly = true; + valid = false; + } + + // Make sure there is 20GB storage available + storageAvailable = storage.bytesAvailable()/1000/1000/1000; + if (storageAvailable < 20) { + valid = false; + } + } else { + valid = false; + } + + + if (!QDir(dataDir+"/lmdb").exists()) { + lmdbExists = false; + valid = false; + } + + result.insert("valid", valid); + result.insert("lmdbExists", lmdbExists); + result.insert("readOnly", readOnly); + result.insert("storageAvailable", storageAvailable); + + return result; +} + DaemonManager::DaemonManager(QObject *parent) : QObject(parent) { diff --git a/src/daemon/DaemonManager.h b/src/daemon/DaemonManager.h index 428630e1..2b9c8b84 100644 --- a/src/daemon/DaemonManager.h +++ b/src/daemon/DaemonManager.h @@ -4,6 +4,7 @@ #include <QObject> #include <QUrl> #include <QProcess> +#include <QVariantMap> class DaemonManager : public QObject { @@ -13,7 +14,7 @@ public: static DaemonManager * instance(const QStringList *args); - Q_INVOKABLE bool start(const QString &flags, bool testnet); + Q_INVOKABLE bool start(const QString &flags, bool testnet, const QString &dataDir = ""); Q_INVOKABLE bool stop(bool testnet); // return true if daemon process is started @@ -21,6 +22,7 @@ public: // Send daemon command from qml and prints output in console window. Q_INVOKABLE bool sendCommand(const QString &cmd, bool testnet) const; Q_INVOKABLE void exit(); + Q_INVOKABLE QVariantMap validateDataDir(const QString &dataDir) const; private: |
