MCPcopy Create free account
hub / github.com/Bitcoin-ABC/bitcoin-abc / LoadWallets

Function LoadWallets

src/wallet/load.cpp:111–155  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109}
110
111bool LoadWallets(WalletContext &context) {
112 interfaces::Chain &chain = *context.chain;
113 try {
114 std::set<fs::path> wallet_paths;
115 for (const auto &wallet : chain.getSettingsList("wallet")) {
116 const auto &name = wallet.get_str();
117 if (!wallet_paths.insert(fs::PathFromString(name)).second) {
118 continue;
119 }
120 DatabaseOptions options;
121 DatabaseStatus status;
122 options.require_existing = true;
123 // No need to verify, assuming verified earlier in VerifyWallets()
124 options.verify = false;
125 bilingual_str error;
126 std::vector<bilingual_str> warnings;
127 std::unique_ptr<WalletDatabase> database =
128 MakeWalletDatabase(name, options, status, error);
129 if (!database && status == DatabaseStatus::FAILED_NOT_FOUND) {
130 continue;
131 }
132 chain.initMessage(_("Loading wallet...").translated);
133 std::shared_ptr<CWallet> pwallet =
134 database
135 ? CWallet::Create(context, name, std::move(database),
136 options.create_flags, error, warnings)
137 : nullptr;
138
139 if (!warnings.empty()) {
140 chain.initWarning(Join(warnings, Untranslated("\n")));
141 }
142 if (!pwallet) {
143 chain.initError(error);
144 return false;
145 }
146
147 NotifyWalletLoaded(context, pwallet);
148 AddWallet(context, pwallet);
149 }
150 return true;
151 } catch (const std::runtime_error &e) {
152 chain.initError(Untranslated(e.what()));
153 return false;
154 }
155}
156
157void StartWallets(WalletContext &context, CScheduler &scheduler) {
158 for (const std::shared_ptr<CWallet> &pwallet : GetWallets(context)) {

Callers 1

loadMethod · 0.85

Calls 14

PathFromStringFunction · 0.85
MakeWalletDatabaseFunction · 0.85
JoinFunction · 0.85
UntranslatedFunction · 0.85
NotifyWalletLoadedFunction · 0.85
AddWalletFunction · 0.85
getSettingsListMethod · 0.80
initMessageMethod · 0.80
initWarningMethod · 0.80
initErrorMethod · 0.80
_Function · 0.50
insertMethod · 0.45

Tested by

no test coverage detected