Skip to content

Commit 434150a

Browse files
committed
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
2 parents 3076993 + 6ec78f1 commit 434150a

File tree

4 files changed

+48
-50
lines changed

4 files changed

+48
-50
lines changed

src/init.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -76,19 +76,18 @@ std::unique_ptr<PeerLogicValidation> peerLogic;
7676
class DummyWalletInit : public WalletInitInterface {
7777
public:
7878

79-
std::string GetHelpString(bool showDebug) override {return std::string{};}
80-
bool ParameterInteraction() override {return true;}
81-
void RegisterRPC(CRPCTable &) override {}
82-
bool Verify() override {return true;}
83-
bool Open() override {LogPrintf("No wallet support compiled in!\n"); return true;}
84-
void Start(CScheduler& scheduler) override {}
85-
void Flush() override {}
86-
void Stop() override {}
87-
void Close() override {}
79+
std::string GetHelpString(bool showDebug) const override {return std::string{};}
80+
bool ParameterInteraction() const override {return true;}
81+
void RegisterRPC(CRPCTable &) const override {}
82+
bool Verify() const override {return true;}
83+
bool Open() const override {LogPrintf("No wallet support compiled in!\n"); return true;}
84+
void Start(CScheduler& scheduler) const override {}
85+
void Flush() const override {}
86+
void Stop() const override {}
87+
void Close() const override {}
8888
};
8989

90-
static DummyWalletInit g_dummy_wallet_init;
91-
WalletInitInterface* const g_wallet_init_interface = &g_dummy_wallet_init;
90+
const WalletInitInterface& g_wallet_init_interface = DummyWalletInit();
9291
#endif
9392

9493
#if ENABLE_ZMQ
@@ -204,7 +203,7 @@ void Shutdown()
204203
StopREST();
205204
StopRPC();
206205
StopHTTPServer();
207-
g_wallet_init_interface->Flush();
206+
g_wallet_init_interface.Flush();
208207
StopMapPort();
209208

210209
// Because these depend on each-other, we make sure that neither can be
@@ -262,7 +261,7 @@ void Shutdown()
262261
pcoinsdbview.reset();
263262
pblocktree.reset();
264263
}
265-
g_wallet_init_interface->Stop();
264+
g_wallet_init_interface.Stop();
266265

267266
#if ENABLE_ZMQ
268267
if (pzmqNotificationInterface) {
@@ -282,7 +281,7 @@ void Shutdown()
282281
UnregisterAllValidationInterfaces();
283282
GetMainSignals().UnregisterBackgroundSignalScheduler();
284283
GetMainSignals().UnregisterWithMempoolSignals(mempool);
285-
g_wallet_init_interface->Close();
284+
g_wallet_init_interface.Close();
286285
globalVerifyHandle.reset();
287286
ECC_Stop();
288287
LogPrintf("%s: done\n", __func__);
@@ -425,7 +424,7 @@ std::string HelpMessage(HelpMessageMode mode)
425424
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.") +
426425
" " + _("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"));
427426

428-
strUsage += g_wallet_init_interface->GetHelpString(showDebug);
427+
strUsage += g_wallet_init_interface.GetHelpString(showDebug);
429428

430429
#if ENABLE_ZMQ
431430
strUsage += HelpMessageGroup(_("ZeroMQ notification options:"));
@@ -1098,7 +1097,7 @@ bool AppInitParameterInteraction()
10981097
return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString()));
10991098
nBytesPerSigOp = gArgs.GetArg("-bytespersigop", nBytesPerSigOp);
11001099

1101-
if (!g_wallet_init_interface->ParameterInteraction()) return false;
1100+
if (!g_wallet_init_interface.ParameterInteraction()) return false;
11021101

11031102
fIsBareMultisigStd = gArgs.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG);
11041103
fAcceptDatacarrier = gArgs.GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER);
@@ -1264,7 +1263,7 @@ bool AppInitMain()
12641263
* available in the GUI RPC console even if external calls are disabled.
12651264
*/
12661265
RegisterAllCoreRPCCommands(tableRPC);
1267-
g_wallet_init_interface->RegisterRPC(tableRPC);
1266+
g_wallet_init_interface.RegisterRPC(tableRPC);
12681267

12691268
/* Start the RPC server already. It will be started in "warmup" mode
12701269
* and not really process calls already (but it will signify connections
@@ -1281,7 +1280,7 @@ bool AppInitMain()
12811280
int64_t nStart;
12821281

12831282
// ********************************************************* Step 5: verify wallet database integrity
1284-
if (!g_wallet_init_interface->Verify()) return false;
1283+
if (!g_wallet_init_interface.Verify()) return false;
12851284

12861285
// ********************************************************* Step 6: network initialization
12871286
// Note that we absolutely cannot open any actual connections
@@ -1600,7 +1599,7 @@ bool AppInitMain()
16001599
fFeeEstimatesInitialized = true;
16011600

16021601
// ********************************************************* Step 8: load wallet
1603-
if (!g_wallet_init_interface->Open()) return false;
1602+
if (!g_wallet_init_interface.Open()) return false;
16041603

16051604
// ********************************************************* Step 9: data directory maintenance
16061605

@@ -1746,7 +1745,7 @@ bool AppInitMain()
17461745
SetRPCWarmupFinished();
17471746
uiInterface.InitMessage(_("Done loading"));
17481747

1749-
g_wallet_init_interface->Start(scheduler);
1748+
g_wallet_init_interface.Start(scheduler);
17501749

17511750
return true;
17521751
}

src/init.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class CScheduler;
1313
class CWallet;
1414

1515
class WalletInitInterface;
16-
extern WalletInitInterface* const g_wallet_init_interface;
16+
extern const WalletInitInterface& g_wallet_init_interface;
1717

1818
namespace boost
1919
{

src/wallet/init.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,38 @@ class WalletInit : public WalletInitInterface {
1818
public:
1919

2020
//! Return the wallets help message.
21-
std::string GetHelpString(bool showDebug) override;
21+
std::string GetHelpString(bool showDebug) const override;
2222

2323
//! Wallets parameter interaction
24-
bool ParameterInteraction() override;
24+
bool ParameterInteraction() const override;
2525

2626
//! Register wallet RPCs.
27-
void RegisterRPC(CRPCTable &tableRPC) override;
27+
void RegisterRPC(CRPCTable &tableRPC) const override;
2828

2929
//! Responsible for reading and validating the -wallet arguments and verifying the wallet database.
3030
// This function will perform salvage on the wallet if requested, as long as only one wallet is
3131
// being loaded (WalletParameterInteraction forbids -salvagewallet, -zapwallettxes or -upgradewallet with multiwallet).
32-
bool Verify() override;
32+
bool Verify() const override;
3333

3434
//! Load wallet databases.
35-
bool Open() override;
35+
bool Open() const override;
3636

3737
//! Complete startup of wallets.
38-
void Start(CScheduler& scheduler) override;
38+
void Start(CScheduler& scheduler) const override;
3939

4040
//! Flush all wallets in preparation for shutdown.
41-
void Flush() override;
41+
void Flush() const override;
4242

4343
//! Stop all wallets. Wallets will be flushed first.
44-
void Stop() override;
44+
void Stop() const override;
4545

4646
//! Close all wallets.
47-
void Close() override;
47+
void Close() const override;
4848
};
4949

50-
static WalletInit g_wallet_init;
51-
WalletInitInterface* const g_wallet_init_interface = &g_wallet_init;
50+
const WalletInitInterface& g_wallet_init_interface = WalletInit();
5251

53-
std::string WalletInit::GetHelpString(bool showDebug)
52+
std::string WalletInit::GetHelpString(bool showDebug) const
5453
{
5554
std::string strUsage = HelpMessageGroup(_("Wallet options:"));
5655
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)
9291
return strUsage;
9392
}
9493

95-
bool WalletInit::ParameterInteraction()
94+
bool WalletInit::ParameterInteraction() const
9695
{
9796
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
9897
for (const std::string& wallet : gArgs.GetArgs("-wallet")) {
@@ -220,7 +219,7 @@ bool WalletInit::ParameterInteraction()
220219
return true;
221220
}
222221

223-
void WalletInit::RegisterRPC(CRPCTable &t)
222+
void WalletInit::RegisterRPC(CRPCTable &t) const
224223
{
225224
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
226225
return;
@@ -229,7 +228,7 @@ void WalletInit::RegisterRPC(CRPCTable &t)
229228
RegisterWalletRPCCommands(t);
230229
}
231230

232-
bool WalletInit::Verify()
231+
bool WalletInit::Verify() const
233232
{
234233
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
235234
return true;
@@ -304,7 +303,7 @@ bool WalletInit::Verify()
304303
return true;
305304
}
306305

307-
bool WalletInit::Open()
306+
bool WalletInit::Open() const
308307
{
309308
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
310309
LogPrintf("Wallet disabled!\n");
@@ -322,28 +321,28 @@ bool WalletInit::Open()
322321
return true;
323322
}
324323

325-
void WalletInit::Start(CScheduler& scheduler)
324+
void WalletInit::Start(CScheduler& scheduler) const
326325
{
327326
for (CWalletRef pwallet : vpwallets) {
328327
pwallet->postInitProcess(scheduler);
329328
}
330329
}
331330

332-
void WalletInit::Flush()
331+
void WalletInit::Flush() const
333332
{
334333
for (CWalletRef pwallet : vpwallets) {
335334
pwallet->Flush(false);
336335
}
337336
}
338337

339-
void WalletInit::Stop()
338+
void WalletInit::Stop() const
340339
{
341340
for (CWalletRef pwallet : vpwallets) {
342341
pwallet->Flush(true);
343342
}
344343
}
345344

346-
void WalletInit::Close()
345+
void WalletInit::Close() const
347346
{
348347
for (CWalletRef pwallet : vpwallets) {
349348
delete pwallet;

src/walletinitinterface.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@ class CRPCTable;
1313
class WalletInitInterface {
1414
public:
1515
/** Get wallet help string */
16-
virtual std::string GetHelpString(bool showDebug) = 0;
16+
virtual std::string GetHelpString(bool showDebug) const = 0;
1717
/** Check wallet parameter interaction */
18-
virtual bool ParameterInteraction() = 0;
18+
virtual bool ParameterInteraction() const = 0;
1919
/** Register wallet RPC*/
20-
virtual void RegisterRPC(CRPCTable &) = 0;
20+
virtual void RegisterRPC(CRPCTable &) const = 0;
2121
/** Verify wallets */
22-
virtual bool Verify() = 0;
22+
virtual bool Verify() const = 0;
2323
/** Open wallets*/
24-
virtual bool Open() = 0;
24+
virtual bool Open() const = 0;
2525
/** Start wallets*/
26-
virtual void Start(CScheduler& scheduler) = 0;
26+
virtual void Start(CScheduler& scheduler) const = 0;
2727
/** Flush Wallets*/
28-
virtual void Flush() = 0;
28+
virtual void Flush() const = 0;
2929
/** Stop Wallets*/
30-
virtual void Stop() = 0;
30+
virtual void Stop() const = 0;
3131
/** Close wallets */
32-
virtual void Close() = 0;
32+
virtual void Close() const = 0;
3333

3434
virtual ~WalletInitInterface() {}
3535
};

0 commit comments

Comments
 (0)