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 [ + - ]: 231 : std::string StringForFeeReason(FeeReason reason)
18 [ + - ]: 173 : {
19 [ + + - + : 58 : static const std::map<FeeReason, std::string> fee_reason_strings = {
+ - ]
20 [ + - ]: 1 : {FeeReason::NONE, "None"},
21 [ + - ]: 1 : {FeeReason::HALF_ESTIMATE, "Half Target 60% Threshold"},
22 [ + - ]: 1 : {FeeReason::FULL_ESTIMATE, "Target 85% Threshold"},
23 [ + - ]: 1 : {FeeReason::DOUBLE_ESTIMATE, "Double Target 95% Threshold"},
24 [ + - ]: 1 : {FeeReason::CONSERVATIVE, "Conservative Double Target longer horizon"},
25 [ + - ]: 1 : {FeeReason::MEMPOOL_MIN, "Mempool Min Fee"},
26 [ + - ]: 1 : {FeeReason::PAYTXFEE, "PayTxFee set"},
27 [ + - ]: 1 : {FeeReason::FALLBACK, "Fallback fee"},
28 [ + - ]: 1 : {FeeReason::REQUIRED, "Minimum Required Fee"},
29 : : };
30 : 58 : auto reason_string = fee_reason_strings.find(reason);
31 : :
32 [ - + # # ]: 58 : if (reason_string == fee_reason_strings.end()) return "Unknown";
33 : :
34 : 58 : return reason_string->second;
35 : 58 : }
36 : :
37 : 428 : const std::vector<std::pair<std::string, FeeEstimateMode>>& FeeModeMap()
38 : : {
39 [ + + - + : 428 : static const std::vector<std::pair<std::string, FeeEstimateMode>> FEE_MODES = {
+ - ]
40 [ + - ]: 18 : {"unset", FeeEstimateMode::UNSET},
41 [ + - ]: 18 : {"economical", FeeEstimateMode::ECONOMICAL},
42 [ + - ]: 18 : {"conservative", FeeEstimateMode::CONSERVATIVE},
43 : : };
44 : 428 : return FEE_MODES;
45 : 0 : }
46 : :
47 : 74 : std::string FeeModes(const std::string& delimiter)
48 : : {
49 : 296 : return Join(FeeModeMap(), delimiter, [&](const std::pair<std::string, FeeEstimateMode>& i) { return i.first; });
50 : : }
51 : :
52 : 18 : std::string InvalidEstimateModeErrorMessage()
53 : : {
54 [ + - + - : 18 : return "Invalid estimate_mode parameter, must be one of: \"" + FeeModes("\", \"") + "\"";
+ - - + ]
55 : 0 : }
56 : :
57 : 354 : bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode)
58 : : {
59 : 354 : auto searchkey = ToUpper(mode_string);
60 [ + - + + ]: 1411 : for (const auto& pair : FeeModeMap()) {
61 [ + - + + ]: 1059 : if (ToUpper(pair.first) == searchkey) {
62 : 2 : fee_estimate_mode = pair.second;
63 : 2 : return true;
64 : : }
65 : : }
66 : 352 : return false;
67 : 354 : }
|