summaryrefslogtreecommitdiff
path: root/controller/EmbeddedNetworkController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'controller/EmbeddedNetworkController.cpp')
-rw-r--r--controller/EmbeddedNetworkController.cpp49
1 files changed, 23 insertions, 26 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp
index 3ec02454..514e06d1 100644
--- a/controller/EmbeddedNetworkController.cpp
+++ b/controller/EmbeddedNetworkController.cpp
@@ -569,26 +569,6 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpGET(
} // else 404
- } else if ((path.size() == 1)&&(path[0] == "memberStatus")) {
-
- const uint64_t now = OSUtils::now();
- Mutex::Lock _l(_memberStatus_m);
- responseBody.push_back('{');
- _db.eachId([this,&responseBody,&now](uint64_t networkId,uint64_t nodeId) {
- char tmp[64];
- auto ms = this->_memberStatus.find(_MemberStatusKey(networkId,nodeId));
- Utils::snprintf(tmp,sizeof(tmp),"%s\"%.16llx-%.10llx\":%s",
- (responseBody.length() > 1) ? "," : "",
- (unsigned long long)networkId,
- (unsigned long long)nodeId,
- ((ms != _memberStatus.end())&&(ms->second.online(now))) ? "true" : "false");
- responseBody.append(tmp);
- });
- responseBody.push_back('}');
- responseContentType = "application/json";
-
- return 200;
-
} else {
char tmp[4096];
@@ -1071,14 +1051,31 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpPOST(
} else if (path[0] == "ping") {
- json testRec;
const uint64_t now = OSUtils::now();
- testRec["clock"] = now;
- testRec["startTime"] = _startTime;
- testRec["content"] = b;
- responseBody = OSUtils::jsonDump(testRec);
- _db.writeRaw("pong",responseBody);
+ bool first = true;
+ std::string pong("{\"memberStatus\":{");
+ {
+ Mutex::Lock _l(_memberStatus_m);
+ _db.eachId([this,&pong,&now,&first](uint64_t networkId,uint64_t nodeId) {
+ char tmp[64];
+ auto ms = this->_memberStatus.find(_MemberStatusKey(networkId,nodeId));
+ Utils::snprintf(tmp,sizeof(tmp),"%s\"%.16llx-%.10llx\":%s",
+ (first) ? "" : ",",
+ (unsigned long long)networkId,
+ (unsigned long long)nodeId,
+ ((ms != _memberStatus.end())&&(ms->second.online(now))) ? "true" : "false");
+ pong.append(tmp);
+ first = false;
+ });
+ }
+ char tmp2[256];
+ Utils::snprintf(tmp2,sizeof(tmp2),"},\"clock\":%llu,\"startTime\":%llu}",(unsigned long long)now,(unsigned long long)_startTime);
+ pong.append(tmp2);
+ _db.writeRaw("pong",pong);
+
+ responseBody = "{}";
responseContentType = "application/json";
+
return 200;
}