DaemonManager: async stop, simple mode wizard - show splash on stop

This commit is contained in:
xiphon 2020-02-16 15:01:17 +00:00
parent eb7fae92ef
commit 636ca1c41d
3 changed files with 18 additions and 21 deletions

View File

@ -678,9 +678,12 @@ ApplicationWindow {
daemonManager.start(flags, persistentSettings.nettype, persistentSettings.blockchainDataDir, persistentSettings.bootstrapNodeAddress, noSync);
}
function stopDaemon(){
function stopDaemon(callback){
appWindow.showProcessingSplash(qsTr("Waiting for daemon to stop..."))
daemonManager.stop(persistentSettings.nettype);
daemonManager.stopAsync(persistentSettings.nettype, function(result) {
hideProcessingSplash();
callback(result);
});
}
function onDaemonStarted(){
@ -694,8 +697,6 @@ ApplicationWindow {
simpleModeConnectionTimer.start();
}
function onDaemonStopped(){
console.log("daemon stopped");
hideProcessingSplash();
currentWallet.connected(true);
}
@ -1927,8 +1928,7 @@ ApplicationWindow {
onClose();
}
confirmationDialog.onRejectedCallback = function() {
daemonManager.stop(persistentSettings.nettype);
onClose();
stopDaemon(onClose);
};
confirmationDialog.open();
}
@ -1955,8 +1955,7 @@ ApplicationWindow {
// If daemon is running - prompt user before exiting
if(typeof daemonManager != "undefined" && daemonRunning) {
if (appWindow.walletMode == 0) {
stopDaemon();
closeAccepted();
stopDaemon(closeAccepted);
} else {
showDaemonIsRunningDialog(closeAccepted);
}

View File

@ -153,21 +153,19 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
return true;
}
bool DaemonManager::stop(NetworkType::Type nettype)
void DaemonManager::stopAsync(NetworkType::Type nettype, const QJSValue& callback)
{
QString message;
sendCommand({"exit"}, nettype, message);
qDebug() << message;
const auto feature = m_scheduler.run([this, nettype] {
QString message;
sendCommand({"exit"}, nettype, message);
// Start stop watcher - Will kill if not shutting down
m_scheduler.run([this, nettype] {
if (stopWatcher(nettype))
{
emit daemonStopped();
}
});
return QJSValueList({stopWatcher(nettype)});
}, callback);
return true;
if (!feature.first)
{
QJSValue(callback).call(QJSValueList({false}));
}
}
bool DaemonManager::startWatcher(NetworkType::Type nettype) const

View File

@ -45,7 +45,7 @@ public:
static DaemonManager * instance(const QStringList *args);
Q_INVOKABLE bool start(const QString &flags, NetworkType::Type nettype, const QString &dataDir = "", const QString &bootstrapNodeAddress = "", bool noSync = false);
Q_INVOKABLE bool stop(NetworkType::Type nettype);
Q_INVOKABLE void stopAsync(NetworkType::Type nettype, const QJSValue& callback);
Q_INVOKABLE bool noSync() const noexcept;
// return true if daemon process is started