From f70e8bebcd11c2544b104d67bb49857691f2aab8 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 17 Apr 2018 15:57:52 +0200 Subject: [PATCH] Merge #12977: Refactor g_wallet_init_interface to const reference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 6ec78f1 wallet: Refactor g_wallet_init_interface to const reference (João Barbosa) 1936125 wallet: Make WalletInitInterface members const (João Barbosa) Pull request description: Tree-SHA512: c382156a38d4c6beaa6c48f911d7b314542b9500d88724b2b3029dae4491cb1e60e10628f6632d1366818ccf343f494650b3171593b5450149544ba198f49bb5 additional Signed-off-by: pasta --- src/init.cpp | 55 +++++++++++++++++++-------------------- src/init.h | 2 +- src/wallet/init.cpp | 55 +++++++++++++++++++-------------------- src/walletinitinterface.h | 26 +++++++++--------- 4 files changed, 68 insertions(+), 70 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 8266689b61..4f8be9211b 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -99,25 +99,24 @@ std::unique_ptr peerLogic; class DummyWalletInit : public WalletInitInterface { public: - std::string GetHelpString(bool showDebug) override {return std::string{};} - bool ParameterInteraction() override {return true;} - void RegisterRPC(CRPCTable &) override {} - bool Verify() override {return true;} - bool Open() override {return true;} - void Start(CScheduler& scheduler) override {} - void Flush() override {} - void Stop() override {} - void Close() override {} + std::string GetHelpString(bool showDebug) const override {return std::string{};} + bool ParameterInteraction() const override {return true;} + void RegisterRPC(CRPCTable &) const override {} + bool Verify() const override {return true;} + bool Open() const override {return true;} + void Start(CScheduler& scheduler) const override {} + void Flush() const override {} + void Stop() const override {} + void Close() const override {} // Dash Specific WalletInitInterface InitPrivateSendSettings - void AutoLockMasternodeCollaterals() override {} - void InitPrivateSendSettings() override {} - void InitKeePass() override {} - bool InitAutoBackup() override {return true;} + void AutoLockMasternodeCollaterals() const override {} + void InitPrivateSendSettings() const override {} + void InitKeePass() const override {} + bool InitAutoBackup() const override {return true;} }; -static DummyWalletInit g_dummy_wallet_init; -WalletInitInterface* const g_wallet_init_interface = &g_dummy_wallet_init; +const WalletInitInterface& g_wallet_init_interface = DummyWalletInit(); #endif static CDSNotificationInterface* pdsNotificationInterface = nullptr; @@ -244,7 +243,7 @@ void PrepareShutdown() std::string statusmessage; bool fRPCInWarmup = RPCIsInWarmup(&statusmessage); - g_wallet_init_interface->Flush(); + g_wallet_init_interface.Flush(); StopMapPort(); // Because these depend on each-other, we make sure that neither can be @@ -324,7 +323,7 @@ void PrepareShutdown() deterministicMNManager.reset(); evoDb.reset(); } - g_wallet_init_interface->Stop(); + g_wallet_init_interface.Stop(); #if ENABLE_ZMQ if (g_zmq_notification_interface) { @@ -375,7 +374,7 @@ void Shutdown() PrepareShutdown(); } // Shutdown part 2: delete wallet instance - g_wallet_init_interface->Close(); + g_wallet_init_interface.Close(); globalVerifyHandle.reset(); ECC_Stop(); LogPrintf("%s: done\n", __func__); @@ -546,7 +545,7 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-whitelist=", _("Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple times.") + " " + _("Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway")); - strUsage += g_wallet_init_interface->GetHelpString(showDebug); + strUsage += g_wallet_init_interface.GetHelpString(showDebug); #if ENABLE_ZMQ strUsage += HelpMessageGroup(_("ZeroMQ notification options:")); @@ -859,7 +858,7 @@ void ThreadImport(std::vector vImportFiles) activeMasternodeManager->Init(pindexTip); } - g_wallet_init_interface->AutoLockMasternodeCollaterals(); + g_wallet_init_interface.AutoLockMasternodeCollaterals(); if (gArgs.GetArg("-persistmempool", DEFAULT_PERSIST_MEMPOOL)) { LoadMempool(); @@ -1335,7 +1334,7 @@ bool AppInitParameterInteraction() return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString())); nBytesPerSigOp = gArgs.GetArg("-bytespersigop", nBytesPerSigOp); - if (!g_wallet_init_interface->ParameterInteraction()) return false; + if (!g_wallet_init_interface.ParameterInteraction()) return false; fIsBareMultisigStd = gArgs.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG); fAcceptDatacarrier = gArgs.GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER); @@ -1671,7 +1670,7 @@ bool AppInitMain() * available in the GUI RPC console even if external calls are disabled. */ RegisterAllCoreRPCCommands(tableRPC); - g_wallet_init_interface->RegisterRPC(tableRPC); + g_wallet_init_interface.RegisterRPC(tableRPC); #if ENABLE_ZMQ RegisterZMQRPCCommands(tableRPC); #endif @@ -1690,11 +1689,11 @@ bool AppInitMain() // ********************************************************* Step 5: verify wallet database integrity - if(!g_wallet_init_interface->InitAutoBackup()) return false; - if (!g_wallet_init_interface->Verify()) return false; + if (!g_wallet_init_interface.InitAutoBackup()) return false; + if (!g_wallet_init_interface.Verify()) return false; // Initialize KeePass Integration - g_wallet_init_interface->InitKeePass(); + g_wallet_init_interface.InitKeePass(); // ********************************************************* Step 6: network initialization // Note that we absolutely cannot open any actual connections // until the very end ("start node") as the UTXO/block state @@ -2071,7 +2070,7 @@ bool AppInitMain() fFeeEstimatesInitialized = true; // ********************************************************* Step 8: load wallet - if (!g_wallet_init_interface->Open()) return false; + if (!g_wallet_init_interface.Open()) return false; // As InitLoadWallet can take several minutes, it's possible the user // requested to kill the GUI during the last operation. If so, exit. @@ -2134,7 +2133,7 @@ bool AppInitMain() // ********************************************************* Step 10b: setup PrivateSend - g_wallet_init_interface->InitPrivateSendSettings(); + g_wallet_init_interface.InitPrivateSendSettings(); CPrivateSend::InitStandardDenominations(); // ********************************************************* Step 10b: Load cache data @@ -2352,7 +2351,7 @@ bool AppInitMain() SetRPCWarmupFinished(); uiInterface.InitMessage(_("Done loading")); - g_wallet_init_interface->Start(scheduler); + g_wallet_init_interface.Start(scheduler); return true; } diff --git a/src/init.h b/src/init.h index 6af207884a..2957e0823d 100644 --- a/src/init.h +++ b/src/init.h @@ -13,7 +13,7 @@ class CScheduler; class CWallet; class WalletInitInterface; -extern WalletInitInterface* const g_wallet_init_interface; +extern const WalletInitInterface& g_wallet_init_interface; namespace boost { diff --git a/src/wallet/init.cpp b/src/wallet/init.cpp index 16f5ba7272..96e4062a38 100644 --- a/src/wallet/init.cpp +++ b/src/wallet/init.cpp @@ -23,45 +23,44 @@ class WalletInit : public WalletInitInterface { public: //! Return the wallets help message. - std::string GetHelpString(bool showDebug) override; + std::string GetHelpString(bool showDebug) const override; //! Wallets parameter interaction - bool ParameterInteraction() override; + bool ParameterInteraction() const override; //! Register wallet RPCs. - void RegisterRPC(CRPCTable &tableRPC) override; + void RegisterRPC(CRPCTable &tableRPC) const override; //! Responsible for reading and validating the -wallet arguments and verifying the wallet database. // This function will perform salvage on the wallet if requested, as long as only one wallet is // being loaded (WalletParameterInteraction forbids -salvagewallet, -zapwallettxes or -upgradewallet with multiwallet). - bool Verify() override; + bool Verify() const override; //! Load wallet databases. - bool Open() override; + bool Open() const override; //! Complete startup of wallets. - void Start(CScheduler& scheduler) override; + void Start(CScheduler& scheduler) const override; //! Flush all wallets in preparation for shutdown. - void Flush() override; + void Flush() const override; //! Stop all wallets. Wallets will be flushed first. - void Stop() override; + void Stop() const override; //! Close all wallets. - void Close() override; + void Close() const override; // Dash Specific Wallet Init - void AutoLockMasternodeCollaterals() override; - void InitPrivateSendSettings() override; - void InitKeePass() override; - bool InitAutoBackup() override; + void AutoLockMasternodeCollaterals() const override; + void InitPrivateSendSettings() const override; + void InitKeePass() const override; + bool InitAutoBackup() const override; }; -static WalletInit g_wallet_init; -WalletInitInterface* const g_wallet_init_interface = &g_wallet_init; +const WalletInitInterface& g_wallet_init_interface = WalletInit(); -std::string WalletInit::GetHelpString(bool showDebug) +std::string WalletInit::GetHelpString(bool showDebug) const { std::string strUsage = HelpMessageGroup(_("Wallet options:")); strUsage += HelpMessageOpt("-createwalletbackups=", strprintf(_("Number of automatic wallet backups (default: %u)"), nWalletBackups)); @@ -127,7 +126,7 @@ std::string WalletInit::GetHelpString(bool showDebug) return strUsage; } -bool WalletInit::ParameterInteraction() +bool WalletInit::ParameterInteraction() const { if (gArgs.IsArgSet("-masternodeblsprivkey") && gArgs.SoftSetBoolArg("-disablewallet", true)) { LogPrintf("%s: parameter interaction: -masternodeblsprivkey set -> setting -disablewallet=1\n", __func__); @@ -285,7 +284,7 @@ bool WalletInit::ParameterInteraction() return true; } -void WalletInit::RegisterRPC(CRPCTable &t) +void WalletInit::RegisterRPC(CRPCTable &t) const { if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) { return; @@ -294,7 +293,7 @@ void WalletInit::RegisterRPC(CRPCTable &t) RegisterWalletRPCCommands(t); } -bool WalletInit::Verify() +bool WalletInit::Verify() const { if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) { return true; @@ -343,7 +342,7 @@ bool WalletInit::Verify() return true; } -bool WalletInit::Open() +bool WalletInit::Open() const { if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) { LogPrintf("Wallet disabled!\n"); @@ -359,7 +358,7 @@ bool WalletInit::Open() return true; } -void WalletInit::Start(CScheduler& scheduler) +void WalletInit::Start(CScheduler& scheduler) const { for (CWallet* pwallet : GetWallets()) { pwallet->postInitProcess(); @@ -373,7 +372,7 @@ void WalletInit::Start(CScheduler& scheduler) } } -void WalletInit::Flush() +void WalletInit::Flush() const { for (CWallet* pwallet : GetWallets()) { if (CPrivateSendClientOptions::IsEnabled()) { @@ -386,14 +385,14 @@ void WalletInit::Flush() } } -void WalletInit::Stop() +void WalletInit::Stop() const { for (CWallet* pwallet : GetWallets()) { pwallet->Flush(true); } } -void WalletInit::Close() +void WalletInit::Close() const { for (CWallet* pwallet : GetWallets()) { RemoveWallet(pwallet); @@ -401,7 +400,7 @@ void WalletInit::Close() } } -void WalletInit::AutoLockMasternodeCollaterals() +void WalletInit::AutoLockMasternodeCollaterals() const { // we can't do this before DIP3 is fully initialized for (CWallet* pwallet : GetWallets()) { @@ -409,7 +408,7 @@ void WalletInit::AutoLockMasternodeCollaterals() } } -void WalletInit::InitPrivateSendSettings() +void WalletInit::InitPrivateSendSettings() const { CPrivateSendClientOptions::SetEnabled(HasWallets() ? gArgs.GetBoolArg("-enableprivatesend", true) : false); if (!CPrivateSendClientOptions::IsEnabled()) { @@ -431,12 +430,12 @@ void WalletInit::InitPrivateSendSettings() CPrivateSendClientOptions::GetDenomsHardCap()); } -void WalletInit::InitKeePass() +void WalletInit::InitKeePass() const { keePassInt.init(); } -bool WalletInit::InitAutoBackup() +bool WalletInit::InitAutoBackup() const { return CWallet::InitAutoBackup(); } diff --git a/src/walletinitinterface.h b/src/walletinitinterface.h index 770ec41c9f..15b76a26d3 100644 --- a/src/walletinitinterface.h +++ b/src/walletinitinterface.h @@ -13,29 +13,29 @@ class CRPCTable; class WalletInitInterface { public: /** Get wallet help string */ - virtual std::string GetHelpString(bool showDebug) = 0; + virtual std::string GetHelpString(bool showDebug) const = 0; /** Check wallet parameter interaction */ - virtual bool ParameterInteraction() = 0; + virtual bool ParameterInteraction() const = 0; /** Register wallet RPC*/ - virtual void RegisterRPC(CRPCTable &) = 0; + virtual void RegisterRPC(CRPCTable &) const = 0; /** Verify wallets */ - virtual bool Verify() = 0; + virtual bool Verify() const = 0; /** Open wallets*/ - virtual bool Open() = 0; + virtual bool Open() const = 0; /** Start wallets*/ - virtual void Start(CScheduler& scheduler) = 0; + virtual void Start(CScheduler& scheduler) const = 0; /** Flush Wallets*/ - virtual void Flush() = 0; + virtual void Flush() const = 0; /** Stop Wallets*/ - virtual void Stop() = 0; + virtual void Stop() const = 0; /** Close wallets */ - virtual void Close() = 0; + virtual void Close() const = 0; // Dash Specific WalletInitInterface - virtual void AutoLockMasternodeCollaterals() = 0; - virtual void InitPrivateSendSettings() = 0; - virtual void InitKeePass() = 0; - virtual bool InitAutoBackup() = 0; + virtual void AutoLockMasternodeCollaterals() const = 0; + virtual void InitPrivateSendSettings() const = 0; + virtual void InitKeePass() const = 0; + virtual bool InitAutoBackup() const = 0; virtual ~WalletInitInterface() {} };