Merge #18165: Consolidate service flag bit-to-name conversion to a shared serviceFlagToStr function

c31bc5bcfd Consolidate service flag bit-to-name conversion to a shared serviceFlagToStr function (Luke Dashjr)
cea91a1e40 Bugfix: GUI: Use unsigned long long type to avoid implicit conversion of MSB check (Luke Dashjr)

Pull request description:

  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<string>` function because both GUI and RPC would need to iterate through it to convert to their desired target formats.

ACKs for top commit:
  jonasschnelli:
    utACK ~~cea91a1e40e12029140ebfba969ce3ef2965029c~~ c31bc5bcfd

Tree-SHA512: 32c7ba8ac7ef2d4087f4f317447ae93a328ec9fb9ad81301df2fbaeeb21a3db7a503187a369552b05a9414251b7cf8e15bcde74c1ea2ef36591ea7ffb6721f60
This commit is contained in:
Jonas Schnelli
2020-05-29 11:06:03 +02:00
4 changed files with 36 additions and 31 deletions

View File

@@ -751,33 +751,15 @@ QString formatDurationStr(int secs)
return strList.join(" ");
}
QString serviceFlagToStr(const quint64 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
}
if (bit < 8) {
return QString("%1[%2]").arg("UNKNOWN").arg(mask);
} else {
return QString("%1[2^%2]").arg("UNKNOWN").arg(bit);
}
}
QString formatServicesStr(quint64 mask)
{
QStringList strList;
for (int i = 0; i < 64; i++) {
uint64_t check = 1LL << i;
uint64_t check = 1ull << i;
if (mask & check)
{
strList.append(serviceFlagToStr(check, i));
strList.append(QString::fromStdString(serviceFlagToStr(mask, i)));
}
}