|
|
|
|
@ -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; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|