@@ -96,7 +96,7 @@ WalletTxOut MakeWalletTxOut(CWallet& wallet,
9696class WalletImpl : public Wallet
9797{
9898public:
99- explicit WalletImpl (const std::shared_ptr<CWallet>& wallet) : m_wallet(wallet) {}
99+ explicit WalletImpl (WalletContext& context, const std::shared_ptr<CWallet>& wallet) : m_context(context), m_wallet(wallet) {}
100100
101101 bool encryptWallet (const SecureString& wallet_passphrase) override
102102 {
@@ -441,7 +441,7 @@ class WalletImpl : public Wallet
441441 CAmount getDefaultMaxTxFee () override { return m_wallet->m_default_max_tx_fee ; }
442442 void remove () override
443443 {
444- RemoveWallet (m_wallet);
444+ RemoveWallet (m_context, m_wallet);
445445 }
446446 bool isLegacy () override { return m_wallet->IsLegacy (); }
447447 std::unique_ptr<Handler> handleUnload (UnloadFn fn) override
@@ -477,6 +477,7 @@ class WalletImpl : public Wallet
477477 }
478478 CWallet* wallet () override { return m_wallet.get (); }
479479
480+ WalletContext& m_context;
480481 std::shared_ptr<CWallet> m_wallet;
481482};
482483
@@ -489,7 +490,7 @@ class WalletClientImpl : public WalletClient
489490 m_context.chain = &chain;
490491 m_context.args = &args;
491492 }
492- ~WalletClientImpl () override { UnloadWallets (); }
493+ ~WalletClientImpl () override { UnloadWallets (m_context ); }
493494
494495 // ! ChainClient methods
495496 void registerRpcs () override
@@ -501,23 +502,23 @@ class WalletClientImpl : public WalletClient
501502 m_rpc_handlers.emplace_back (m_context.chain ->handleRpc (m_rpc_commands.back ()));
502503 }
503504 }
504- bool verify () override { return VerifyWallets (* m_context. chain , m_wallet_filenames); }
505- bool load () override { return LoadWallets (* m_context. chain , m_wallet_filenames); }
506- void start (CScheduler& scheduler) override { return StartWallets (scheduler, * Assert (m_context. args ) ); }
507- void flush () override { return FlushWallets (); }
508- void stop () override { return StopWallets (); }
505+ bool verify () override { return VerifyWallets (m_context, m_wallet_filenames); }
506+ bool load () override { return LoadWallets (m_context, m_wallet_filenames); }
507+ void start (CScheduler& scheduler) override { return StartWallets (m_context, scheduler ); }
508+ void flush () override { return FlushWallets (m_context ); }
509+ void stop () override { return StopWallets (m_context ); }
509510 void setMockTime (int64_t time) override { return SetMockTime (time); }
510511
511512 // ! WalletClient methods
512513 std::unique_ptr<Wallet> createWallet (const std::string& name, const SecureString& passphrase, uint64_t wallet_creation_flags, WalletCreationStatus& status, bilingual_str& error, std::vector<bilingual_str>& warnings) override
513514 {
514515 std::shared_ptr<CWallet> wallet;
515- status = CreateWallet (* m_context. chain , passphrase, wallet_creation_flags, name, error, warnings, wallet);
516- return MakeWallet (std::move (wallet));
516+ status = CreateWallet (m_context, passphrase, wallet_creation_flags, name, error, warnings, wallet);
517+ return MakeWallet (m_context, std::move (wallet));
517518 }
518519 std::unique_ptr<Wallet> loadWallet (const std::string& name, bilingual_str& error, std::vector<bilingual_str>& warnings) override
519520 {
520- return MakeWallet (LoadWallet (* m_context. chain , WalletLocation (name), error, warnings));
521+ return MakeWallet (m_context, LoadWallet (m_context, WalletLocation (name), error, warnings));
521522 }
522523 std::string getWalletDir () override
523524 {
@@ -534,15 +535,16 @@ class WalletClientImpl : public WalletClient
534535 std::vector<std::unique_ptr<Wallet>> getWallets () override
535536 {
536537 std::vector<std::unique_ptr<Wallet>> wallets;
537- for (const auto & wallet : GetWallets ()) {
538- wallets.emplace_back (MakeWallet (wallet));
538+ for (const auto & wallet : GetWallets (m_context )) {
539+ wallets.emplace_back (MakeWallet (m_context, wallet));
539540 }
540541 return wallets;
541542 }
542543 std::unique_ptr<Handler> handleLoadWallet (LoadWalletFn fn) override
543544 {
544- return HandleLoadWallet (std::move (fn));
545+ return HandleLoadWallet (m_context, std::move (fn));
545546 }
547+ WalletContext* context () override { return &m_context; }
546548
547549 WalletContext m_context;
548550 const std::vector<std::string> m_wallet_filenames;
@@ -552,7 +554,7 @@ class WalletClientImpl : public WalletClient
552554
553555} // namespace
554556
555- std::unique_ptr<Wallet> MakeWallet (const std::shared_ptr<CWallet>& wallet) { return wallet ? MakeUnique<WalletImpl>(wallet) : nullptr ; }
557+ std::unique_ptr<Wallet> MakeWallet (WalletContext& context, const std::shared_ptr<CWallet>& wallet) { return wallet ? MakeUnique<WalletImpl>(context, wallet) : nullptr ; }
556558
557559std::unique_ptr<WalletClient> MakeWalletClient (Chain& chain, ArgsManager& args, std::vector<std::string> wallet_filenames)
558560{
0 commit comments