Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F12944999
D8518.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
D8518.diff
View Options
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
Details
Attached
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)
Attached To
D8518: Consolidate service flag bit-to-name conversion to a shared serviceFlagToStr function
Event Timeline
Log In to Comment