Branch data Line data Source code
# 1 : : // Copyright (c) 2009-2010 Satoshi Nakamoto
# 2 : : // Copyright (c) 2009-2020 The Bitcoin Core developers
# 3 : : // Distributed under the MIT software license, see the accompanying
# 4 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
# 5 : :
# 6 : : #include <util/fees.h>
# 7 : :
# 8 : : #include <policy/fees.h>
# 9 : : #include <util/strencodings.h>
# 10 : : #include <util/string.h>
# 11 : :
# 12 : : #include <map>
# 13 : : #include <string>
# 14 : : #include <vector>
# 15 : : #include <utility>
# 16 : :
# 17 : : std::string StringForFeeReason(FeeReason reason)
# 18 : 4879 : {
# 19 : 4879 : static const std::map<FeeReason, std::string> fee_reason_strings = {
# 20 : 4879 : {FeeReason::NONE, "None"},
# 21 : 4879 : {FeeReason::HALF_ESTIMATE, "Half Target 60% Threshold"},
# 22 : 4879 : {FeeReason::FULL_ESTIMATE, "Target 85% Threshold"},
# 23 : 4879 : {FeeReason::DOUBLE_ESTIMATE, "Double Target 95% Threshold"},
# 24 : 4879 : {FeeReason::CONSERVATIVE, "Conservative Double Target longer horizon"},
# 25 : 4879 : {FeeReason::MEMPOOL_MIN, "Mempool Min Fee"},
# 26 : 4879 : {FeeReason::PAYTXFEE, "PayTxFee set"},
# 27 : 4879 : {FeeReason::FALLBACK, "Fallback fee"},
# 28 : 4879 : {FeeReason::REQUIRED, "Minimum Required Fee"},
# 29 : 4879 : };
# 30 : 4879 : auto reason_string = fee_reason_strings.find(reason);
# 31 : :
# 32 [ - + ]: 4879 : if (reason_string == fee_reason_strings.end()) return "Unknown";
# 33 : :
# 34 : 4879 : return reason_string->second;
# 35 : 4879 : }
# 36 : :
# 37 : : const std::vector<std::pair<std::string, FeeEstimateMode>>& FeeModeMap()
# 38 : 15558 : {
# 39 : 15558 : static const std::vector<std::pair<std::string, FeeEstimateMode>> FEE_MODES = {
# 40 : 15558 : {"unset", FeeEstimateMode::UNSET},
# 41 : 15558 : {"economical", FeeEstimateMode::ECONOMICAL},
# 42 : 15558 : {"conservative", FeeEstimateMode::CONSERVATIVE},
# 43 : 15558 : };
# 44 : 15558 : return FEE_MODES;
# 45 : 15558 : }
# 46 : :
# 47 : : std::string FeeModes(const std::string& delimiter)
# 48 : 15426 : {
# 49 : 46278 : return Join(FeeModeMap(), delimiter, [&](const std::pair<std::string, FeeEstimateMode>& i) { return i.first; });
# 50 : 15426 : }
# 51 : :
# 52 : : const std::string InvalidEstimateModeErrorMessage()
# 53 : 59 : {
# 54 : 59 : return "Invalid estimate_mode parameter, must be one of: \"" + FeeModes("\", \"") + "\"";
# 55 : 59 : }
# 56 : :
# 57 : : bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode)
# 58 : 132 : {
# 59 : 132 : auto searchkey = ToUpper(mode_string);
# 60 [ + + ]: 338 : for (const auto& pair : FeeModeMap()) {
# 61 [ + + ]: 338 : if (ToUpper(pair.first) == searchkey) {
# 62 : 73 : fee_estimate_mode = pair.second;
# 63 : 73 : return true;
# 64 : 73 : }
# 65 : 338 : }
# 66 : 132 : return false;
# 67 : 132 : }
|