|
24 | 24 | #include <map> |
25 | 25 | #include <string> |
26 | 26 |
|
| 27 | +namespace { |
| 28 | +#define RESULT_MAP_ENTRY(name, type, desc) {name, {type, name, desc}} |
| 29 | +const std::map<std::string, RPCResult> RPCRESULT_MAP{{ |
| 30 | + {"addresses", |
| 31 | + {RPCResult::Type::OBJ, "addresses", "Network addresses of the masternode", |
| 32 | + { |
| 33 | + {RPCResult::Type::ARR, "core_p2p", /*optional=*/true, "Addresses used for protocol P2P", |
| 34 | + {{RPCResult::Type::STR, "address", ""}}}, |
| 35 | + {RPCResult::Type::ARR, "platform_p2p", /*optional=*/true, "Addresses used for Platform P2P", |
| 36 | + {{RPCResult::Type::STR, "address", ""}}}, |
| 37 | + {RPCResult::Type::ARR, "platform_https", /*optional=*/true, "Addresses used for Platform HTTPS API", |
| 38 | + {{RPCResult::Type::STR, "address", ""}}}, |
| 39 | + }}}, |
| 40 | + RESULT_MAP_ENTRY("collateralHash", RPCResult::Type::STR_HEX, "Collateral transaction hash"), |
| 41 | + RESULT_MAP_ENTRY("collateralIndex", RPCResult::Type::NUM, "Collateral transaction output index"), |
| 42 | + RESULT_MAP_ENTRY("consecutivePayments", RPCResult::Type::NUM, "Consecutive payments masternode has received in payment cycle"), |
| 43 | + RESULT_MAP_ENTRY("height", RPCResult::Type::NUM, "Block height"), |
| 44 | + RESULT_MAP_ENTRY("inputsHash", RPCResult::Type::STR_HEX, "Hash of all the outpoints of the transaction inputs"), |
| 45 | + RESULT_MAP_ENTRY("lastPaidHeight", RPCResult::Type::NUM, "Height masternode was last paid"), |
| 46 | + RESULT_MAP_ENTRY("llmqType", RPCResult::Type::NUM, "Quorum type"), |
| 47 | + RESULT_MAP_ENTRY("merkleRootMNList", RPCResult::Type::STR_HEX, "Merkle root of the masternode list"), |
| 48 | + RESULT_MAP_ENTRY("merkleRootQuorums", RPCResult::Type::STR_HEX, "Merkle root of the quorum list"), |
| 49 | + RESULT_MAP_ENTRY("operatorPayoutAddress", RPCResult::Type::STR, "Dash address used for operator reward payments"), |
| 50 | + RESULT_MAP_ENTRY("operatorReward", RPCResult::Type::NUM, "Fraction in %% of reward shared with the operator between 0 and 10000"), |
| 51 | + RESULT_MAP_ENTRY("ownerAddress", RPCResult::Type::STR, "Dash address used for payee updates and proposal voting"), |
| 52 | + RESULT_MAP_ENTRY("payoutAddress", RPCResult::Type::STR, "Dash address used for masternode reward payments"), |
| 53 | + RESULT_MAP_ENTRY("platformHTTPPort", RPCResult::Type::NUM, "(DEPRECATED) TCP port of Platform HTTP API"), |
| 54 | + RESULT_MAP_ENTRY("platformNodeID", RPCResult::Type::STR_HEX, "Node ID derived from P2P public key for Platform P2P"), |
| 55 | + RESULT_MAP_ENTRY("platformP2PPort", RPCResult::Type::NUM, "(DEPRECATED) TCP port of Platform P2P"), |
| 56 | + RESULT_MAP_ENTRY("PoSeBanHeight", RPCResult::Type::NUM, "Height masternode was banned for Proof of Service violations"), |
| 57 | + RESULT_MAP_ENTRY("PoSePenalty", RPCResult::Type::NUM, "Proof of Service penalty score"), |
| 58 | + RESULT_MAP_ENTRY("PoSeRevivedHeight", RPCResult::Type::NUM, "Height masternode recovered from Proof of Service violations"), |
| 59 | + RESULT_MAP_ENTRY("proTxHash", RPCResult::Type::STR_HEX, "Hash of the masternode's initial ProRegTx"), |
| 60 | + RESULT_MAP_ENTRY("pubKeyOperator", RPCResult::Type::STR, "BLS public key used for operator signing"), |
| 61 | + RESULT_MAP_ENTRY("quorumHash", RPCResult::Type::STR_HEX, "Hash of the quorum"), |
| 62 | + RESULT_MAP_ENTRY("quorumSig", RPCResult::Type::STR_HEX, "BLS recovered threshold signature of quorum"), |
| 63 | + RESULT_MAP_ENTRY("registeredHeight", RPCResult::Type::NUM, "Height masternode was registered"), |
| 64 | + RESULT_MAP_ENTRY("revocationReason", RPCResult::Type::NUM, "Reason for ProUpRegTx revocation"), |
| 65 | + RESULT_MAP_ENTRY("service", RPCResult::Type::STR, "(DEPRECATED) IP address and port of the masternode"), |
| 66 | + RESULT_MAP_ENTRY("type", RPCResult::Type::NUM, "Masternode type"), |
| 67 | + RESULT_MAP_ENTRY("version", RPCResult::Type::NUM, "Special transaction version"), |
| 68 | + RESULT_MAP_ENTRY("votingAddress", RPCResult::Type::STR, "Dash address used for voting"), |
| 69 | +}}; |
| 70 | +#undef RESULT_MAP_ENTRY |
| 71 | +} // anonymous namespace |
| 72 | + |
27 | 73 | RPCResult GetRpcResult(const std::string& key, bool optional) |
28 | 74 | { |
29 | | -#define RESULT_MAP_ENTRY(type, name, desc) {name, {type, name, optional, desc}} |
30 | | - const std::map<std::string, RPCResult> result_map{{ |
31 | | - {"addresses", |
32 | | - {RPCResult::Type::OBJ, "addresses", optional, "Network addresses of the masternode", |
33 | | - { |
34 | | - {RPCResult::Type::ARR, "core_p2p", /*optional=*/true, "Addresses used for protocol P2P", |
35 | | - {{RPCResult::Type::STR, "address", ""}}}, |
36 | | - {RPCResult::Type::ARR, "platform_p2p", /*optional=*/true, "Addresses used for Platform P2P", |
37 | | - {{RPCResult::Type::STR, "address", ""}}}, |
38 | | - {RPCResult::Type::ARR, "platform_https", /*optional=*/true, "Addresses used for Platform HTTPS API", |
39 | | - {{RPCResult::Type::STR, "address", ""}}}, |
40 | | - }}}, |
41 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "collateralHash", "Collateral transaction hash"), |
42 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "collateralIndex", "Collateral transaction output index"), |
43 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "consecutivePayments", "Consecutive payments masternode has received in payment cycle"), |
44 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "height", "Block height"), |
45 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "inputsHash", "Hash of all the outpoints of the transaction inputs"), |
46 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "lastPaidHeight", "Height masternode was last paid"), |
47 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "llmqType", "Quorum type"), |
48 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "merkleRootMNList", "Merkle root of the masternode list"), |
49 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "merkleRootQuorums", "Merkle root of the quorum list"), |
50 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR, "operatorPayoutAddress", "Dash address used for operator reward payments"), |
51 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "operatorReward", "Fraction in %% of reward shared with the operator between 0 and 10000"), |
52 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR, "ownerAddress", "Dash address used for payee updates and proposal voting"), |
53 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR, "payoutAddress", "Dash address used for masternode reward payments"), |
54 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "platformHTTPPort", "(DEPRECATED) TCP port of Platform HTTP API"), |
55 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "platformNodeID", "Node ID derived from P2P public key for Platform P2P"), |
56 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "platformP2PPort", "(DEPRECATED) TCP port of Platform P2P"), |
57 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "PoSeBanHeight", "Height masternode was banned for Proof of Service violations"), |
58 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "PoSePenalty", "Proof of Service penalty score"), |
59 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "PoSeRevivedHeight", "Height masternode recovered from Proof of Service violations"), |
60 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "proTxHash", "Hash of the masternode's initial ProRegTx"), |
61 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR, "pubKeyOperator", "BLS public key used for operator signing"), |
62 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "quorumHash", "Hash of the quorum"), |
63 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR_HEX, "quorumSig", "BLS recovered threshold signature of quorum"), |
64 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "registeredHeight", "Height masternode was registered"), |
65 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "revocationReason", "Reason for ProUpRegTx revocation"), |
66 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR, "service", "(DEPRECATED) IP address and port of the masternode"), |
67 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "type", "Masternode type"), |
68 | | - RESULT_MAP_ENTRY(RPCResult::Type::NUM, "version", "Special transaction version"), |
69 | | - RESULT_MAP_ENTRY(RPCResult::Type::STR, "votingAddress", "Dash address used for voting"), |
70 | | - }}; |
71 | | -#undef RESULT_MAP_ENTRY |
72 | | - |
73 | | - if (const auto it = result_map.find(key); it != result_map.end()) { |
74 | | - return it->second; |
| 75 | + if (const auto it = RPCRESULT_MAP.find(key); it != RPCRESULT_MAP.end()) { |
| 76 | + const auto& ret{it->second}; |
| 77 | + return RPCResult{ret.m_type, ret.m_key_name, optional, ret.m_description, ret.m_inner}; |
75 | 78 | } |
76 | | - |
77 | 79 | throw NonFatalCheckError(strprintf("Requested invalid RPCResult for nonexistent key \"%s\"", key).c_str(), |
78 | 80 | __FILE__, __LINE__, __func__); |
79 | 81 | } |
|
0 commit comments