mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-16 13:01:19 +02:00
Merge a8a2628b7a into merged_master (Bitcoin PR bitcoin/bitcoin
interfaces:#30828 #30697)
This commit is contained in:
commit
9e99dcf8d8
4 changed files with 30 additions and 24 deletions
|
|
@ -821,29 +821,29 @@ public:
|
|||
{
|
||||
std::optional<interfaces::SettingsAction> action;
|
||||
args().LockSettings([&](common::Settings& settings) {
|
||||
auto* ptr_value = common::FindKey(settings.rw_settings, name);
|
||||
// Create value if it doesn't exist
|
||||
auto& value = ptr_value ? *ptr_value : settings.rw_settings[name];
|
||||
action = update_settings_func(value);
|
||||
if (auto* value = common::FindKey(settings.rw_settings, name)) {
|
||||
action = update_settings_func(*value);
|
||||
if (value->isNull()) settings.rw_settings.erase(name);
|
||||
} else {
|
||||
UniValue new_value;
|
||||
action = update_settings_func(new_value);
|
||||
if (!new_value.isNull()) settings.rw_settings[name] = std::move(new_value);
|
||||
}
|
||||
});
|
||||
if (!action) return false;
|
||||
// Now dump value to disk if requested
|
||||
return *action == interfaces::SettingsAction::SKIP_WRITE || args().WriteSettingsFile();
|
||||
return *action != interfaces::SettingsAction::WRITE || args().WriteSettingsFile();
|
||||
}
|
||||
bool overwriteRwSetting(const std::string& name, common::SettingsValue& value, bool write) override
|
||||
bool overwriteRwSetting(const std::string& name, common::SettingsValue value, interfaces::SettingsAction action) override
|
||||
{
|
||||
if (value.isNull()) return deleteRwSettings(name, write);
|
||||
return updateRwSetting(name, [&](common::SettingsValue& settings) {
|
||||
settings = std::move(value);
|
||||
return write ? interfaces::SettingsAction::WRITE : interfaces::SettingsAction::SKIP_WRITE;
|
||||
return action;
|
||||
});
|
||||
}
|
||||
bool deleteRwSettings(const std::string& name, bool write) override
|
||||
bool deleteRwSettings(const std::string& name, interfaces::SettingsAction action) override
|
||||
{
|
||||
args().LockSettings([&](common::Settings& settings) {
|
||||
settings.rw_settings.erase(name);
|
||||
});
|
||||
return !write || args().WriteSettingsFile();
|
||||
return overwriteRwSetting(name, {}, action);
|
||||
}
|
||||
void requestMempoolTransactions(Notifications& notifications) override
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue