aboutsummaryrefslogtreecommitdiff
path: root/src/daemon/DaemonManager.cpp
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-06-04 12:17:58 +0200
committerRiccardo Spagni <ric@spagni.net>2017-06-04 12:17:58 +0200
commitecaa1a8e2311c43331f377a8baa29d3bc986179d (patch)
tree6be6aa6f42b417d0b5698a0a6d5728bdd9aa071d /src/daemon/DaemonManager.cpp
parent9e121fb676efe4c1b21aa4fa2d4cab638ce882b6 (diff)
parent62e1dc490f7e2b49bcd319e06a36005cc66f01db (diff)
downloadmonzero-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/daemon/DaemonManager.cpp')
-rw-r--r--src/daemon/DaemonManager.cpp55
1 files changed, 54 insertions, 1 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)
{