| 268 | } // namespace |
| 269 | |
| 270 | std::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) |
| 271 | { |
| 272 | auto result = WITH_LOCK(g_loading_wallet_mutex, return g_loading_wallet_set.insert(name)); |
| 273 | if (!result.second) { |
| 274 | error = Untranslated("Wallet already loading."); |
| 275 | status = DatabaseStatus::FAILED_LOAD; |
| 276 | return nullptr; |
| 277 | } |
| 278 | auto wallet = LoadWalletInternal(context, name, load_on_start, options, status, error, warnings); |
| 279 | WITH_LOCK(g_loading_wallet_mutex, g_loading_wallet_set.erase(result.first)); |
| 280 | return wallet; |
| 281 | } |
| 282 | |
| 283 | std::shared_ptr<CWallet> CreateWallet(WalletContext& context, const std::string& name, std::optional<bool> load_on_start, DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error, std::vector<bilingual_str>& warnings) |
| 284 | { |
no test coverage detected