Merge #12977: Refactor g_wallet_init_interface to const reference
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
This commit is contained in:
commit
434150aef7
4 changed files with 48 additions and 50 deletions
39
src/init.cpp
39
src/init.cpp
|
@ -76,19 +76,18 @@ std::unique_ptr<PeerLogicValidation> 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 {LogPrintf("No wallet support compiled in!\n"); 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 {LogPrintf("No wallet support compiled in!\n"); return true;}
|
||||
void Start(CScheduler& scheduler) const override {}
|
||||
void Flush() const override {}
|
||||
void Stop() const override {}
|
||||
void Close() const override {}
|
||||
};
|
||||
|
||||
static DummyWalletInit g_dummy_wallet_init;
|
||||
WalletInitInterface* const g_wallet_init_interface = &g_dummy_wallet_init;
|
||||
const WalletInitInterface& g_wallet_init_interface = DummyWalletInit();
|
||||
#endif
|
||||
|
||||
#if ENABLE_ZMQ
|
||||
|
@ -204,7 +203,7 @@ void Shutdown()
|
|||
StopREST();
|
||||
StopRPC();
|
||||
StopHTTPServer();
|
||||
g_wallet_init_interface->Flush();
|
||||
g_wallet_init_interface.Flush();
|
||||
StopMapPort();
|
||||
|
||||
// Because these depend on each-other, we make sure that neither can be
|
||||
|
@ -262,7 +261,7 @@ void Shutdown()
|
|||
pcoinsdbview.reset();
|
||||
pblocktree.reset();
|
||||
}
|
||||
g_wallet_init_interface->Stop();
|
||||
g_wallet_init_interface.Stop();
|
||||
|
||||
#if ENABLE_ZMQ
|
||||
if (pzmqNotificationInterface) {
|
||||
|
@ -282,7 +281,7 @@ void Shutdown()
|
|||
UnregisterAllValidationInterfaces();
|
||||
GetMainSignals().UnregisterBackgroundSignalScheduler();
|
||||
GetMainSignals().UnregisterWithMempoolSignals(mempool);
|
||||
g_wallet_init_interface->Close();
|
||||
g_wallet_init_interface.Close();
|
||||
globalVerifyHandle.reset();
|
||||
ECC_Stop();
|
||||
LogPrintf("%s: done\n", __func__);
|
||||
|
@ -425,7 +424,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
|||
strUsage += HelpMessageOpt("-whitelist=<IP address or network>", _("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:"));
|
||||
|
@ -1098,7 +1097,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);
|
||||
|
@ -1264,7 +1263,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);
|
||||
|
||||
/* Start the RPC server already. It will be started in "warmup" mode
|
||||
* and not really process calls already (but it will signify connections
|
||||
|
@ -1281,7 +1280,7 @@ bool AppInitMain()
|
|||
int64_t nStart;
|
||||
|
||||
// ********************************************************* Step 5: verify wallet database integrity
|
||||
if (!g_wallet_init_interface->Verify()) return false;
|
||||
if (!g_wallet_init_interface.Verify()) return false;
|
||||
|
||||
// ********************************************************* Step 6: network initialization
|
||||
// Note that we absolutely cannot open any actual connections
|
||||
|
@ -1600,7 +1599,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;
|
||||
|
||||
// ********************************************************* Step 9: data directory maintenance
|
||||
|
||||
|
@ -1746,7 +1745,7 @@ bool AppInitMain()
|
|||
SetRPCWarmupFinished();
|
||||
uiInterface.InitMessage(_("Done loading"));
|
||||
|
||||
g_wallet_init_interface->Start(scheduler);
|
||||
g_wallet_init_interface.Start(scheduler);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -18,39 +18,38 @@ 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;
|
||||
};
|
||||
|
||||
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("-addresstype", strprintf("What type of addresses to use (\"legacy\", \"p2sh-segwit\", or \"bech32\", default: \"%s\")", FormatOutputType(DEFAULT_ADDRESS_TYPE)));
|
||||
|
@ -92,7 +91,7 @@ std::string WalletInit::GetHelpString(bool showDebug)
|
|||
return strUsage;
|
||||
}
|
||||
|
||||
bool WalletInit::ParameterInteraction()
|
||||
bool WalletInit::ParameterInteraction() const
|
||||
{
|
||||
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
|
||||
for (const std::string& wallet : gArgs.GetArgs("-wallet")) {
|
||||
|
@ -220,7 +219,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;
|
||||
|
@ -229,7 +228,7 @@ void WalletInit::RegisterRPC(CRPCTable &t)
|
|||
RegisterWalletRPCCommands(t);
|
||||
}
|
||||
|
||||
bool WalletInit::Verify()
|
||||
bool WalletInit::Verify() const
|
||||
{
|
||||
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
|
||||
return true;
|
||||
|
@ -304,7 +303,7 @@ bool WalletInit::Verify()
|
|||
return true;
|
||||
}
|
||||
|
||||
bool WalletInit::Open()
|
||||
bool WalletInit::Open() const
|
||||
{
|
||||
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
|
||||
LogPrintf("Wallet disabled!\n");
|
||||
|
@ -322,28 +321,28 @@ bool WalletInit::Open()
|
|||
return true;
|
||||
}
|
||||
|
||||
void WalletInit::Start(CScheduler& scheduler)
|
||||
void WalletInit::Start(CScheduler& scheduler) const
|
||||
{
|
||||
for (CWalletRef pwallet : vpwallets) {
|
||||
pwallet->postInitProcess(scheduler);
|
||||
}
|
||||
}
|
||||
|
||||
void WalletInit::Flush()
|
||||
void WalletInit::Flush() const
|
||||
{
|
||||
for (CWalletRef pwallet : vpwallets) {
|
||||
pwallet->Flush(false);
|
||||
}
|
||||
}
|
||||
|
||||
void WalletInit::Stop()
|
||||
void WalletInit::Stop() const
|
||||
{
|
||||
for (CWalletRef pwallet : vpwallets) {
|
||||
pwallet->Flush(true);
|
||||
}
|
||||
}
|
||||
|
||||
void WalletInit::Close()
|
||||
void WalletInit::Close() const
|
||||
{
|
||||
for (CWalletRef pwallet : vpwallets) {
|
||||
delete pwallet;
|
||||
|
|
|
@ -13,23 +13,23 @@ 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;
|
||||
|
||||
virtual ~WalletInitInterface() {}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue