From c31bc5bcfddf440e9a1713f7ba2ca2bf9cfa8e2e Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 17 Feb 2020 01:53:13 +0000 Subject: Consolidate service flag bit-to-name conversion to a shared serviceFlagToStr function Side effect: this results in the RPC showing unknown service bits as "UNKNOWN[n]" like the GUI. Note that there is no common mask-to-vector function because both GUI and RPC would need to iterate through it to convert to their desired target formats. --- src/protocol.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/protocol.cpp') diff --git a/src/protocol.cpp b/src/protocol.cpp index e49e5523a..816b3ead0 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -199,3 +199,27 @@ const std::vector &getAllNetMessageTypes() { return allNetMessageTypesVec; } + +std::string serviceFlagToStr(const uint64_t mask, const int bit) +{ + switch (ServiceFlags(mask)) { + case NODE_NONE: abort(); // impossible + case NODE_NETWORK: return "NETWORK"; + case NODE_GETUTXO: return "GETUTXO"; + case NODE_BLOOM: return "BLOOM"; + case NODE_WITNESS: return "WITNESS"; + case NODE_NETWORK_LIMITED: return "NETWORK_LIMITED"; + // Not using default, so we get warned when a case is missing + } + + std::ostringstream stream; + stream.imbue(std::locale::classic()); + stream << "UNKNOWN["; + if (bit < 8) { + stream << mask; + } else { + stream << "2^" << bit; + } + stream << "]"; + return stream.str(); +} -- cgit v1.2.3