提交 73c9b26a authored 作者: blu's avatar blu

big refacting of communitation architect

上级 f10da790
...@@ -65,6 +65,9 @@ class EvDaemon{ ...@@ -65,6 +65,9 @@ class EvDaemon{
this->daemonId = this->devSn + ":evdaemon:0"; this->daemonId = this->devSn + ":evdaemon:0";
/// req config /// req config
json jret = cloudutils::reqConfig(this->info); json jret = cloudutils::reqConfig(this->info);
json diff = json::diff(this->config, jret["data"]);
// TODO
spdlog::info("evdaemon {} config diff: {}", devSn, diff.dump(4));
// apply config // apply config
try{ try{
if(jret["code"] != 0) { if(jret["code"] != 0) {
...@@ -142,6 +145,8 @@ class EvDaemon{ ...@@ -142,6 +145,8 @@ class EvDaemon{
return -1; return -1;
} }
this->config = jret["data"];
return 0; return 0;
} }
...@@ -203,6 +208,10 @@ class EvDaemon{ ...@@ -203,6 +208,10 @@ class EvDaemon{
spdlog::error("evdaemon failed to find module {} in config {}", peerId, jret["data"].dump()); spdlog::error("evdaemon failed to find module {} in config {}", peerId, jret["data"].dump());
return 1; return 1;
} }
json diff = json::diff(this->config, jret["data"]);
// TODO:
spdlog::info("evdaemon {} config diff: {}", devSn, diff.dump(4));
peerData["config"][peerId] = *cfg; peerData["config"][peerId] = *cfg;
peerData["status"][peerId] = 0; peerData["status"][peerId] = 0;
pid_t pid; pid_t pid;
......
...@@ -164,37 +164,42 @@ namespace cfgutils { ...@@ -164,37 +164,42 @@ namespace cfgutils {
subMn = ""; subMn = "";
} }
for(auto &[k,v]: data.items()) { try{
// it's evmgr for(auto &[k,v]: data.items()) {
if(modName == "evmgr") { // it's evmgr
if(k == sn) { if(modName == "evmgr") {
ret = &v; if(k == sn) {
break; ret = &v;
} break;
}else{ }
json &ipcs = v["ipcs"]; }else{
json &ipcs = v["ipcs"];
for(auto &ipc: ipcs) {
json &modules = ipc["modules"]; for(auto &ipc: ipcs) {
for(auto &[mn, ml]: modules.items()) { json &modules = ipc["modules"];
for(auto &m: ml) { for(auto &[mn, ml]: modules.items()) {
if(subMn.empty()){ for(auto &m: ml) {
if(mn == modName && m["sn"] == sn && m["iid"] == iid && m["enabled"] != 0) { if(mn == "evml" && !subMn.empty()){
ret = &v; if(subMn == m["type"] && m[iid] == iid && m["sn"] == sn && m["enabled"] != 0) {
break; ret = &v;
} break;
}else{ }
if(subMn == m["type"] && m[iid] == iid && m["sn"] == sn && m["enabled"] != 0) { }else if(subMn.empty()){
ret = &v; if(mn == modName && m["sn"] == sn && m["iid"] == iid && m["enabled"] != 0) {
break; ret = &v;
break;
}
} }
} }
if(ret != NULL) break;
} }
if(ret != NULL) break; if(ret != NULL) break;
} }
if(ret != NULL) break;
} }
} }
}catch(exception &e) {
spdlog::error("find module {} in {} exception: {}", peerId, data.dump(), e.what());
return NULL;
} }
return ret; return ret;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论