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

Function LoadWallets

src/wallet/load.cpp:103–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

loadMethod · 0.85

Calls 13

PathFromStringFunction · 0.85
MakeWalletDatabaseFunction · 0.85
_Function · 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
insertMethod · 0.45

Tested by

no test coverage detected