MCPcopy Create free account
hub / github.com/ElementsProject/elements / LoadWalletInternal

Function LoadWalletInternal

src/wallet/wallet.cpp:237–267  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235
236namespace {
237std::shared_ptr<CWallet> LoadWalletInternal(WalletContext& context, const std::string& name, std::optional<bool> load_on_start, const DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error, std::vector<bilingual_str>& warnings)
238{
239 try {
240 std::unique_ptr<WalletDatabase> database = MakeWalletDatabase(name, options, status, error);
241 if (!database) {
242 error = Untranslated("Wallet file verification failed.") + Untranslated(" ") + error;
243 return nullptr;
244 }
245
246 context.chain->initMessage(_("Loading wallet…").translated);
247 const std::shared_ptr<CWallet> wallet = CWallet::Create(context, name, std::move(database), options.create_flags, error, warnings);
248 if (!wallet) {
249 error = Untranslated("Wallet loading failed.") + Untranslated(" ") + error;
250 status = DatabaseStatus::FAILED_LOAD;
251 return nullptr;
252 }
253
254 NotifyWalletLoaded(context, wallet);
255 AddWallet(context, wallet);
256 wallet->postInitProcess();
257
258 // Write the wallet setting
259 UpdateWalletSetting(*context.chain, name, load_on_start, warnings);
260
261 return wallet;
262 } catch (const std::runtime_error& e) {
263 error = Untranslated(e.what());
264 status = DatabaseStatus::FAILED_LOAD;
265 return nullptr;
266 }
267}
268} // namespace
269
270std::shared_ptr<CWallet> LoadWallet(WalletContext& context, const std::string& name, std::optional<bool> load_on_start, const DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error, std::vector<bilingual_str>& warnings)

Callers 1

LoadWalletFunction · 0.85

Calls 8

MakeWalletDatabaseFunction · 0.85
UntranslatedFunction · 0.85
_Function · 0.85
NotifyWalletLoadedFunction · 0.85
AddWalletFunction · 0.85
UpdateWalletSettingFunction · 0.85
initMessageMethod · 0.80
postInitProcessMethod · 0.80

Tested by

no test coverage detected