10#include <system_error>
13constexpr const char* FEES_BASE_DIR{
"fees"};
14constexpr const char* BLOCK_POLICY_ESTIMATES_FILENAME{
"block_policy_estimates.dat"};
15constexpr const char* LEGACY_FEE_ESTIMATES_FILENAME{
"fee_estimates.dat"};
16constexpr const char* MEMPOOL_POLICY_ESTIMATOR_FILENAME{
"mempool_policy_estimator.dat"};
18fs::path LegacyFeeEstPath(
const ArgsManager& argsman)
20 return argsman.
GetDataDirNet() / LEGACY_FEE_ESTIMATES_FILENAME;
26 const fs::path legacy_path{LegacyFeeEstPath(argsman)};
29 std::error_code error;
31 fs::remove(legacy_path, error);
33 LogWarning(
"Failed to remove legacy fee estimates file %s: %s. Continuing anyway.",
fs::PathToString(legacy_path), error.message());
39 fs::create_directories(block_policy_path.parent_path(), error);
41 LogWarning(
"Failed to create block policy fee estimates directory %s: %s. Continuing without migration.",
fs::PathToString(block_policy_path.parent_path()), error.message());
44 fs::rename(legacy_path, block_policy_path, error);
54 return argsman.
GetDataDirNet() / FEES_BASE_DIR / BLOCK_POLICY_ESTIMATES_FILENAME;
59 return argsman.
GetDataDirNet() / FEES_BASE_DIR / MEMPOOL_POLICY_ESTIMATOR_FILENAME;
fs::path GetDataDirNet() const EXCLUSIVE_LOCKS_REQUIRED(!cs_args)
Get data directory path with appended network identifier.
fs::path MempoolPolicyEstimatorPath(const ArgsManager &argsman)
void MaybeMigrateLegacyFeeEstimates(const ArgsManager &argsman)
Move a legacy fee_estimates.dat file to the current block policy fee estimator path,...
fs::path BlockPolicyFeeEstPath(const ArgsManager &argsman)
static bool exists(const path &p)
static std::string PathToString(const path &path)
Convert path object to a byte string.