Page MenuHomePhabricator

D8518.diff
No OneTemporary

D8518.diff

diff --git a/src/protocol.h b/src/protocol.h
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -314,8 +314,7 @@
* nServices flags.
*/
enum ServiceFlags : uint64_t {
- // NOTE: When adding here, be sure to update qt/guiutil.cpp's
- // formatServicesStr too
+ // NOTE: When adding here, be sure to update serviceFlagToStr too
// Nothing
NODE_NONE = 0,
// NODE_NETWORK means that the node is capable of serving the complete block
@@ -359,6 +358,8 @@
NODE_AVALANCHE = (1 << 24),
};
+std::string serviceFlagToStr(uint64_t mask, int bit);
+
/**
* Gets the set of service flags which are "desirable" for a given peer.
*
diff --git a/src/protocol.cpp b/src/protocol.cpp
--- a/src/protocol.cpp
+++ b/src/protocol.cpp
@@ -254,3 +254,34 @@
const std::vector<std::string> &getAllNetMessageTypes() {
return allNetMessageTypesVec;
}
+
+std::string serviceFlagToStr(const uint64_t mask, const int bit) {
+ switch (ServiceFlags(mask)) {
+ case NODE_NONE:
+ // impossible
+ abort();
+ case NODE_NETWORK:
+ return "NETWORK";
+ case NODE_GETUTXO:
+ return "GETUTXO";
+ case NODE_BLOOM:
+ return "BLOOM";
+ case NODE_XTHIN:
+ return "XTHIN";
+ case NODE_NETWORK_LIMITED:
+ return "NETWORK_LIMITED";
+ case NODE_AVALANCHE:
+ return "AVALANCHE";
+ default:
+ std::ostringstream stream;
+ stream.imbue(std::locale::classic());
+ stream << "UNKNOWN[";
+ if (bit < 8) {
+ stream << mask;
+ } else {
+ stream << "2^" << bit;
+ }
+ stream << "]";
+ return stream.str();
+ }
+}
diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp
--- a/src/qt/guiutil.cpp
+++ b/src/qt/guiutil.cpp
@@ -751,30 +751,6 @@
return strList.join(" ");
}
-QString serviceFlagToStr(const quint64 mask, const int bit) {
- switch (ServiceFlags(mask)) {
- case NODE_NONE:
- // impossible
- abort();
- case NODE_NETWORK:
- return "NETWORK";
- case NODE_GETUTXO:
- return "GETUTXO";
- case NODE_BLOOM:
- return "BLOOM";
- case NODE_XTHIN:
- return "XTHIN";
- case NODE_NETWORK_LIMITED:
- return "NETWORK_LIMITED";
- default:
- 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;
@@ -785,7 +761,7 @@
break;
}
if (mask & check) {
- strList.append(serviceFlagToStr(check, i));
+ strList.append(QString::fromStdString(serviceFlagToStr(check, i)));
}
}
diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp
--- a/src/rpc/util.cpp
+++ b/src/rpc/util.cpp
@@ -866,25 +866,14 @@
}
UniValue GetServicesNames(ServiceFlags services) {
+ const uint64_t services_n = services;
UniValue servicesNames(UniValue::VARR);
- if (services & NODE_NETWORK) {
- servicesNames.push_back("NETWORK");
- }
- if (services & NODE_GETUTXO) {
- servicesNames.push_back("GETUTXO");
- }
- if (services & NODE_BLOOM) {
- servicesNames.push_back("BLOOM");
- }
- if (services & NODE_XTHIN) {
- servicesNames.push_back("XTHIN");
- }
- if (services & NODE_NETWORK_LIMITED) {
- servicesNames.push_back("NETWORK_LIMITED");
- }
- if (services & NODE_AVALANCHE) {
- servicesNames.push_back("AVALANCHE");
+ for (int i = 0; i < 64; ++i) {
+ const uint64_t mask = 1ull << i;
+ if (services_n & mask) {
+ servicesNames.push_back(serviceFlagToStr(mask, i));
+ }
}
return servicesNames;

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 6, 16:59 (21 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5082735
Default Alt Text
D8518.diff (3 KB)

Event Timeline