提交 854114dd authored 作者: blu's avatar blu

feature: report status

上级 2891ac18
...@@ -105,6 +105,12 @@ private: ...@@ -105,6 +105,12 @@ private:
// mod2ipc // mod2ipc
peerData["mod2ipc"][modGid] = ipcSn; peerData["mod2ipc"][modGid] = ipcSn;
// mgrsn2ipc
if(peerData["mgr2ipc"].count(k) == 0) {
peerData["mgr2ipc"][k] = json();
}
peerData["mgr2ipc"][k][ipcSn] = 1;
if(shad["expected"].count(modGid) != 0) { if(shad["expected"].count(modGid) != 0) {
//multiple mod with same class //multiple mod with same class
spdlog::error("{} configuration for ipc {} in dev {} having multiple modules {}. ignored that extra module", devSn, ipcSn, k, modGid); spdlog::error("{} configuration for ipc {} in dev {} having multiple modules {}. ignored that extra module", devSn, ipcSn, k, modGid);
...@@ -549,17 +555,59 @@ private: ...@@ -549,17 +555,59 @@ private:
if(data["code"] != 0) { if(data["code"] != 0) {
json resp; json resp;
resp["target"] = selfId, resp["target"] = selfId,
resp["metaType"] = EV_MSG_META_PONG; resp["metaType"] = EV_MSG_META_PONG;
resp["data"] = data["msg"]; resp["data"] = data["msg"];
sendEdgeMsg(resp); sendEdgeMsg(resp);
} }
else { else {
sendConfig(data["data"], selfId); sendConfig(data["data"], selfId);
} }
if(peerData["mgr2ipc"].count(selfId) != 0) {
for(auto &[k,v]: peerData["mgr2ipc"][selfId].items()){
if(peerData["ipcStatus"].count(k) == 0){
spdlog::error("{} no ipcStatus config for camera {}", devSn, k);
}else{
auto &ipcStatus = peerData["ipcStatus"][k];
if(ipcStatus["issues"].count(selfId) != 0) {
ipcStatus["issues"].erase(selfId);
}
}
}
}
} }
else { else {
peerData["online"][selfId] = 0; peerData["online"][selfId] = 0;
spdlog::warn("{} peer disconnected: {}", devSn, selfId); spdlog::warn("{} peer disconnected: {}", devSn, selfId);
if(peerData["mgr2ipc"].count(selfId) != 0) {
for(auto &[k,v]: peerData["mgr2ipc"][selfId].items()){
if(peerData["ipcStatus"].count(k) == 0){
spdlog::error("{} no ipcStatus config for camera {}", devSn, k);
}else{
auto &ipcStatus = peerData["ipcStatus"][k];
for(auto &[m,n]:ipcStatus["current"].items()) {
n = false;
}
json data;
json meta;
string msg = fmt::format("evcloudsvc detects cluster mgr {} offline of ipc {}", selfId, k);
data["msg"] = msg;
data["modId"] = "ALL";
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVMODOFFLINE;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_ERROR;
data["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
data["status"] = "active";
meta["type"] = EV_MSG_META_TYPE_REPORT;
meta["value"] = EV_MSG_META_VALUE_REPORT_LEVEL_ERROR;
ipcStatus["issues"][selfId] = data;
}
}
}else{
spdlog::error("{} no such dev {} for disconnect", devSn, selfId);
}
} }
return ret; return ret;
} }
...@@ -1224,18 +1272,34 @@ public: ...@@ -1224,18 +1272,34 @@ public:
ret["code"] = 1; ret["code"] = 1;
} }
} }
else {
ret["data"] = this->peerData["ipcStatus"];
}
for(auto &[k,v]: ret["data"].items()) { for(auto &[k,v]: this->peerData["ipcStatus"].items()) {
string tsn = v["mgrTerminal"]["sn"]; string tsn = v["mgrTerminal"]["sn"];
if(this->peerData["online"].count(tsn) != 0 && this->peerData["online"][tsn] != 0) { if(this->peerData["online"].count(tsn) != 0 && this->peerData["online"][tsn] != 0) {
v["mgrTerminal"]["online"] = true; v["mgrTerminal"]["online"] = true;
}else{ }else{
v["mgrTerminal"]["online"] = false; v["mgrTerminal"]["online"] = false;
auto &ipcStatus = v;
for(auto &[m,n]:ipcStatus["current"].items()) {
n = false;
}
json data;
json meta;
string msg = fmt::format("evcloudsvc detects cluster mgr {} offline of ipc {}", tsn, k);
data["msg"] = msg;
data["modId"] = "ALL";
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVMODOFFLINE;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_ERROR;
data["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
data["status"] = "active";
meta["type"] = EV_MSG_META_TYPE_REPORT;
meta["value"] = EV_MSG_META_VALUE_REPORT_LEVEL_ERROR;
ipcStatus["issues"][tsn] = data;
} }
} }
ret["data"] = this->peerData["ipcStatus"];
} }
catch(exception &e) { catch(exception &e) {
ret["code"] = -1; ret["code"] = -1;
...@@ -1416,6 +1480,7 @@ public: ...@@ -1416,6 +1480,7 @@ public:
this->peerData["online"] = json(); this->peerData["online"] = json();
this->peerData["ipcStatus"] = json(); this->peerData["ipcStatus"] = json();
this->peerData["mod2ipc"] = json(); this->peerData["mod2ipc"] = json();
this->peerData["mgr2ipc"] = json();
spdlog::info("evcloudsvc boot"); spdlog::info("evcloudsvc boot");
loadConfigMap(); loadConfigMap();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论