Changeset View
Changeset View
Standalone View
Standalone View
src/interfaces/wallet.cpp
Show First 20 Lines • Show All 457 Lines • ▼ Show 20 Lines | public: | ||||
} | } | ||||
CWallet *wallet() override { return m_wallet.get(); } | CWallet *wallet() override { return m_wallet.get(); } | ||||
std::shared_ptr<CWallet> m_wallet; | std::shared_ptr<CWallet> m_wallet; | ||||
}; | }; | ||||
class WalletClientImpl : public ChainClient { | class WalletClientImpl : public ChainClient { | ||||
public: | public: | ||||
WalletClientImpl(Chain &chain, | WalletClientImpl(Chain &chain, ArgsManager &args, | ||||
std::vector<std::string> wallet_filenames) | std::vector<std::string> wallet_filenames) | ||||
: m_wallet_filenames(std::move(wallet_filenames)) { | : m_wallet_filenames(std::move(wallet_filenames)) { | ||||
m_context.chain = &chain; | m_context.chain = &chain; | ||||
m_context.args = &args; | |||||
} | } | ||||
void registerRpcs(const Span<const CRPCCommand> &commands) { | void registerRpcs(const Span<const CRPCCommand> &commands) { | ||||
for (const CRPCCommand &command : commands) { | for (const CRPCCommand &command : commands) { | ||||
m_rpc_commands.emplace_back( | m_rpc_commands.emplace_back( | ||||
command.category, command.name, | command.category, command.name, | ||||
[this, &command](Config &config, | [this, &command](Config &config, | ||||
const JSONRPCRequest &request, | const JSONRPCRequest &request, | ||||
Show All 15 Lines | public: | ||||
return VerifyWallets(chainParams, *m_context.chain, | return VerifyWallets(chainParams, *m_context.chain, | ||||
m_wallet_filenames); | m_wallet_filenames); | ||||
} | } | ||||
bool load(const CChainParams &chainParams) override { | bool load(const CChainParams &chainParams) override { | ||||
return LoadWallets(chainParams, *m_context.chain, | return LoadWallets(chainParams, *m_context.chain, | ||||
m_wallet_filenames); | m_wallet_filenames); | ||||
} | } | ||||
void start(CScheduler &scheduler) override { | void start(CScheduler &scheduler) override { | ||||
return StartWallets(scheduler); | return StartWallets(scheduler, *Assert(m_context.args)); | ||||
} | } | ||||
void flush() override { return FlushWallets(); } | void flush() override { return FlushWallets(); } | ||||
void stop() override { return StopWallets(); } | void stop() override { return StopWallets(); } | ||||
void setMockTime(int64_t time) override { return SetMockTime(time); } | void setMockTime(int64_t time) override { return SetMockTime(time); } | ||||
std::vector<std::unique_ptr<Wallet>> getWallets() override { | std::vector<std::unique_ptr<Wallet>> getWallets() override { | ||||
std::vector<std::unique_ptr<Wallet>> wallets; | std::vector<std::unique_ptr<Wallet>> wallets; | ||||
for (const auto &wallet : GetWallets()) { | for (const auto &wallet : GetWallets()) { | ||||
wallets.emplace_back(MakeWallet(wallet)); | wallets.emplace_back(MakeWallet(wallet)); | ||||
} | } | ||||
return wallets; | return wallets; | ||||
} | } | ||||
~WalletClientImpl() override { UnloadWallets(); } | ~WalletClientImpl() override { UnloadWallets(); } | ||||
WalletContext m_context; | WalletContext m_context; | ||||
std::vector<std::string> m_wallet_filenames; | const std::vector<std::string> m_wallet_filenames; | ||||
std::vector<std::unique_ptr<Handler>> m_rpc_handlers; | std::vector<std::unique_ptr<Handler>> m_rpc_handlers; | ||||
std::list<CRPCCommand> m_rpc_commands; | std::list<CRPCCommand> m_rpc_commands; | ||||
}; | }; | ||||
} // namespace | } // namespace | ||||
std::unique_ptr<Wallet> MakeWallet(const std::shared_ptr<CWallet> &wallet) { | std::unique_ptr<Wallet> MakeWallet(const std::shared_ptr<CWallet> &wallet) { | ||||
return wallet ? std::make_unique<WalletImpl>(wallet) : nullptr; | return wallet ? std::make_unique<WalletImpl>(wallet) : nullptr; | ||||
} | } | ||||
std::unique_ptr<ChainClient> | std::unique_ptr<ChainClient> | ||||
MakeWalletClient(Chain &chain, std::vector<std::string> wallet_filenames) { | MakeWalletClient(Chain &chain, ArgsManager &args, | ||||
return std::make_unique<WalletClientImpl>(chain, | std::vector<std::string> wallet_filenames) { | ||||
return std::make_unique<WalletClientImpl>(chain, args, | |||||
std::move(wallet_filenames)); | std::move(wallet_filenames)); | ||||
} | } | ||||
} // namespace interfaces | } // namespace interfaces |