提交 96be1fd2 authored 作者: blu's avatar blu

init

上级 27c876b6
...@@ -77,6 +77,7 @@ private: ...@@ -77,6 +77,7 @@ private:
ret["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count(); ret["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
spdlog::info(newConfig.dump()); spdlog::info(newConfig.dump());
try { try {
json deltaCfg = json();
if(newConfig.count("data") == 0 || newConfig["data"].size() == 0) { if(newConfig.count("data") == 0 || newConfig["data"].size() == 0) {
ret["code"] = 1; ret["code"] = 1;
ret["msg"] = "evcloudsvc invalid config body received: " + newConfig.dump(4); ret["msg"] = "evcloudsvc invalid config body received: " + newConfig.dump(4);
...@@ -190,7 +191,7 @@ private: ...@@ -190,7 +191,7 @@ private:
spdlog::info("evcloudsvc peer {} config diff:\n{}\n\norigin:\n{}", k, diff.dump(), this->peerData["config"][k].dump()); spdlog::info("evcloudsvc peer {} config diff:\n{}\n\norigin:\n{}", k, diff.dump(), this->peerData["config"][k].dump());
if(diff.size()!=0) { if(diff.size()!=0) {
// send config // send config
sendConfig(v, k); deltaCfg[k] = 1;
} }
}else{ }else{
this->peerData["config"][k] = v; this->peerData["config"][k] = v;
...@@ -214,13 +215,11 @@ private: ...@@ -214,13 +215,11 @@ private:
this->configMap = oldConfigMap; this->configMap = oldConfigMap;
} }
// save full config // update config
for(auto &[k,v]: data.items()){ for(auto &[x,y]: deltaCfg.items()){
json j = getConfigForDevice(k); json j = getConfigForDevice(x);
if(j["code"] != 0) { if(j["code"] == 0) {
spdlog::error("evcloudsvc failed getConfigForDevice {}: {} ", k, j["msg"].dump()); sendConfig(j, x);
}else{
this->peerData["fullcfg"][k] = j["data"];
} }
} }
......
...@@ -48,6 +48,7 @@ class EvDaemon{ ...@@ -48,6 +48,7 @@ class EvDaemon{
mutex cacheLock; mutex cacheLock;
queue<string> eventQue; queue<string> eventQue;
mutex eventQLock; mutex eventQLock;
mutex cfgLock;
/// module gid to process id /// module gid to process id
json mapModsToPids; json mapModsToPids;
...@@ -81,6 +82,7 @@ class EvDaemon{ ...@@ -81,6 +82,7 @@ class EvDaemon{
// apply config // apply config
try{ try{
lock_guard<mutex> lock(cacheLock);
json &data = this->config; json &data = this->config;
string peerId; string peerId;
pid_t pid; pid_t pid;
...@@ -108,6 +110,7 @@ class EvDaemon{ ...@@ -108,6 +110,7 @@ class EvDaemon{
} }
// startup other submodules // startup other submodules
spdlog::info("dump: {}", v.dump(4));
json &ipcs = v["ipcs"]; json &ipcs = v["ipcs"];
for(auto &ipc : ipcs) { for(auto &ipc : ipcs) {
json &modules = ipc["modules"]; json &modules = ipc["modules"];
...@@ -124,7 +127,7 @@ class EvDaemon{ ...@@ -124,7 +127,7 @@ class EvDaemon{
if(ret != 0) { if(ret != 0) {
continue; continue;
} }
this->peerData["config"][peerId] = v; this->peerData["config"][peerId] = v;
if(this->peerData["status"].count(peerId) == 0||this->peerData["status"][peerId] == 0) { if(this->peerData["status"].count(peerId) == 0||this->peerData["status"][peerId] == 0) {
...@@ -292,10 +295,6 @@ class EvDaemon{ ...@@ -292,10 +295,6 @@ class EvDaemon{
} }
if(ret < 0) {
spdlog::error("evdaemon {} failed to update localconfig", devSn);
}
// event // event
json jEvt; json jEvt;
jEvt["type"] = EV_MSG_TYPE_CONN_STAT; jEvt["type"] = EV_MSG_TYPE_CONN_STAT;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论