@@ -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
@@ -488,7 +489,7 @@ class WalletClientImpl : public WalletClient
488489 {
489490 m_context.chain = &chain;
490491 }
491- ~WalletClientImpl () override { UnloadWallets (); }
492+ ~WalletClientImpl () override { UnloadWallets (m_context ); }
492493
493494 // ! ChainClient methods
494495 void registerRpcs () override
@@ -500,23 +501,23 @@ class WalletClientImpl : public WalletClient
500501 m_rpc_handlers.emplace_back (m_context.chain ->handleRpc (m_rpc_commands.back ()));
501502 }
502503 }
503- bool verify () override { return VerifyWallets (* m_context. chain , m_wallet_filenames); }
504- bool load () override { return LoadWallets (* m_context. chain , m_wallet_filenames); }
505- void start (CScheduler& scheduler) override { return StartWallets (scheduler); }
506- void flush () override { return FlushWallets (); }
507- void stop () override { return StopWallets (); }
504+ bool verify () override { return VerifyWallets (m_context, m_wallet_filenames); }
505+ bool load () override { return LoadWallets (m_context, m_wallet_filenames); }
506+ void start (CScheduler& scheduler) override { return StartWallets (m_context, scheduler); }
507+ void flush () override { return FlushWallets (m_context ); }
508+ void stop () override { return StopWallets (m_context ); }
508509 void setMockTime (int64_t time) override { return SetMockTime (time); }
509510
510511 // ! WalletClient methods
511512 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
512513 {
513514 std::shared_ptr<CWallet> wallet;
514- status = CreateWallet (m_chain , passphrase, wallet_creation_flags, name, error, warnings, wallet);
515- return MakeWallet (std::move (wallet));
515+ status = CreateWallet (m_context , passphrase, wallet_creation_flags, name, error, warnings, wallet);
516+ return MakeWallet (m_context, std::move (wallet));
516517 }
517518 std::unique_ptr<Wallet> loadWallet (const std::string& name, bilingual_str& error, std::vector<bilingual_str>& warnings) override
518519 {
519- return MakeWallet (LoadWallet (m_chain , WalletLocation (name), error, warnings));
520+ return MakeWallet (m_context, LoadWallet (m_context , WalletLocation (name), error, warnings));
520521 }
521522 std::string getWalletDir () override
522523 {
@@ -533,15 +534,16 @@ class WalletClientImpl : public WalletClient
533534 std::vector<std::unique_ptr<Wallet>> getWallets () override
534535 {
535536 std::vector<std::unique_ptr<Wallet>> wallets;
536- for (const auto & wallet : GetWallets ()) {
537- wallets.emplace_back (MakeWallet (wallet));
537+ for (const auto & wallet : GetWallets (m_context )) {
538+ wallets.emplace_back (MakeWallet (m_context, wallet));
538539 }
539540 return wallets;
540541 }
541542 std::unique_ptr<Handler> handleLoadWallet (LoadWalletFn fn) override
542543 {
543- return HandleLoadWallet (std::move (fn));
544+ return HandleLoadWallet (m_context, std::move (fn));
544545 }
546+ WalletContext* context () override { return &m_context; }
545547
546548 WalletContext m_context;
547549 std::vector<std::string> m_wallet_filenames;
@@ -551,7 +553,7 @@ class WalletClientImpl : public WalletClient
551553
552554} // namespace
553555
554- std::unique_ptr<Wallet> MakeWallet (const std::shared_ptr<CWallet>& wallet) { return wallet ? MakeUnique<WalletImpl>(wallet) : nullptr ; }
556+ std::unique_ptr<Wallet> MakeWallet (WalletContext& context, const std::shared_ptr<CWallet>& wallet) { return wallet ? MakeUnique<WalletImpl>(context, wallet) : nullptr ; }
555557
556558std::unique_ptr<WalletClient> MakeWalletClient (Chain& chain, std::vector<std::string> wallet_filenames)
557559{
0 commit comments