Skip to content

Commit 56514c7

Browse files
committed
chore: move RpcResult map outside GetRpcResult()
We are using it extensively and could do with some cleanup
1 parent f01930b commit 56514c7

File tree

1 file changed

+49
-47
lines changed

1 file changed

+49
-47
lines changed

src/evo/core_write.cpp

Lines changed: 49 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,56 +24,58 @@
2424
#include <map>
2525
#include <string>
2626

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+
2773
RPCResult GetRpcResult(const std::string& key, bool optional)
2874
{
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};
7578
}
76-
7779
throw NonFatalCheckError(strprintf("Requested invalid RPCResult for nonexistent key \"%s\"", key).c_str(),
7880
__FILE__, __LINE__, __func__);
7981
}

0 commit comments

Comments
 (0)