Skip to content
Permalink
Browse files

daemon: async daemon status check, don't freeze on wallet startup

  • Loading branch information...
xiphon committed Aug 13, 2019
1 parent 55b4425 commit a01ffc6e1ae24dfbabaa640d65208140fa281dbf
Showing with 17 additions and 4 deletions.
  1. +6 −2 main.qml
  2. +8 −0 src/daemon/DaemonManager.cpp
  3. +3 −2 src/daemon/DaemonManager.h
@@ -486,8 +486,12 @@ ApplicationWindow {
middlePanel.transferView.updatePriorityDropdown();

// If wallet isnt connected, advanced wallet mode and no daemon is running - Ask
if(!isMobile && appWindow.walletMode >= 2 && walletManager.isDaemonLocal(currentDaemonAddress) && !walletInitialized && status === Wallet.ConnectionStatus_Disconnected && !daemonManager.running(persistentSettings.nettype)){
daemonManagerDialog.open();
if (!isMobile && appWindow.walletMode >= 2 && walletManager.isDaemonLocal(currentDaemonAddress) && !walletInitialized && status === Wallet.ConnectionStatus_Disconnected) {
daemonManager.runningAsync(persistentSettings.nettype, function(running) {
if (!running) {
daemonManagerDialog.open();
}
});
}
// initialize transaction history once wallet is initialized first time;
if (!walletInitialized) {
@@ -243,6 +243,14 @@ bool DaemonManager::running(NetworkType::Type nettype) const
}
return false;
}

void DaemonManager::runningAsync(NetworkType::Type nettype, const QJSValue& callback) const
{
m_scheduler.run([this, nettype] {
return QJSValueList({running(nettype)});
}, callback);
}

bool DaemonManager::sendCommand(const QString &cmd, NetworkType::Type nettype) const
{
QString message;
@@ -48,14 +48,15 @@ class DaemonManager : public QObject
Q_INVOKABLE bool stop(NetworkType::Type nettype);

// return true if daemon process is started
Q_INVOKABLE bool running(NetworkType::Type nettype) const;
Q_INVOKABLE void runningAsync(NetworkType::Type nettype, const QJSValue& callback) const;
// Send daemon command from qml and prints output in console window.
Q_INVOKABLE bool sendCommand(const QString &cmd, NetworkType::Type nettype) const;
Q_INVOKABLE void exit();
Q_INVOKABLE QVariantMap validateDataDir(const QString &dataDir) const;

private:

bool running(NetworkType::Type nettype) const;
bool sendCommand(const QString &cmd, NetworkType::Type nettype, QString &message) const;
bool startWatcher(NetworkType::Type nettype) const;
bool stopWatcher(NetworkType::Type nettype) const;
@@ -82,7 +83,7 @@ public slots:
bool m_has_daemon = true;
bool m_app_exit = false;

FutureScheduler m_scheduler;
mutable FutureScheduler m_scheduler;
};

#endif // DAEMONMANAGER_H

0 comments on commit a01ffc6

Please sign in to comment.
You can’t perform that action at this time.