提交 eb5a5979 authored 作者: blu's avatar blu

big refacting of communitation architect

上级 e632d76a
...@@ -170,7 +170,7 @@ private: ...@@ -170,7 +170,7 @@ private:
string info; string info;
int cnt = 0; int cnt = 0;
for(auto &[k,v]: this->peerData["config"].items()) { for(auto &[k,v]: this->peerData["config"].items()) {
if((this->peerData["status"].count(k) == 0 || this->peerData["status"][k] == 0) && this->peerData["enabled"] != 0) { if(this->peerData["enabled"].count(k) != 0 && this->peerData["enabled"][k] != 0 && (this->peerData["status"].count(k) == 0 || this->peerData["status"][k] == 0)) {
tmp.push_back(k); tmp.push_back(k);
info += (cnt == 0? "" : string(", ")) + k; info += (cnt == 0? "" : string(", ")) + k;
} }
...@@ -182,7 +182,7 @@ private: ...@@ -182,7 +182,7 @@ private:
pid_t pid = 0; pid_t pid = 0;
ret = zmqhelper::forkSubsystem(devSn, e, portRouter, pid); ret = zmqhelper::forkSubsystem(devSn, e, portRouter, pid);
if(0 == ret) { if(0 == ret) {
this->peerData["status"][e] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count(); this->peerData["status"][e] = 0;
this->peerData["pids"][e] = pid; this->peerData["pids"][e] = pid;
spdlog::info("evdaemon {} created subsystem {}", devSn, e); spdlog::info("evdaemon {} created subsystem {}", devSn, e);
} }
......
...@@ -42,7 +42,7 @@ private: ...@@ -42,7 +42,7 @@ private:
void *pCtxDealer = nullptr, *pDealer = nullptr; void *pCtxDealer = nullptr, *pDealer = nullptr;
json config; json config;
string devSn, ident; string devSn, ident;
json peerStatus; json peerData;
unordered_map<string, queue<vector<vector<uint8_t> >> > cachedMsg; unordered_map<string, queue<vector<vector<uint8_t> >> > cachedMsg;
mutex cacheLock; mutex cacheLock;
queue<string> eventQue; queue<string> eventQue;
...@@ -131,16 +131,13 @@ private: ...@@ -131,16 +131,13 @@ private:
return -1; return -1;
} }
if(peerStatus.count(selfId) == 0||peerStatus[selfId] == 0) { if(peerData["status"].count(selfId) == 0||peerData["status"][selfId] == 0) {
peerStatus[selfId] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count(); peerData["status"][selfId] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
spdlog::info("evmgr {} peer connected: {}", devSn, selfId); spdlog::info("evmgr {} peer connected: {}", devSn, selfId);
eventConn = true; eventConn = true;
mod->at("status") = 1;
spdlog::debug("evmgr {} update status of {} to 1", devSn, selfId);
} }
else { else {
peerStatus[selfId] = 0; peerData["status"][selfId] = 0;
mod->at("status") = 0;
spdlog::warn("evmgr {} peer disconnected: {}", devSn, selfId); spdlog::warn("evmgr {} peer disconnected: {}", devSn, selfId);
} }
...@@ -176,7 +173,7 @@ private: ...@@ -176,7 +173,7 @@ private:
selfId = body2str(body[0]); selfId = body2str(body[0]);
peerId = body2str(body[1]); peerId = body2str(body[1]);
// update status; // update status;
this->peerStatus[selfId] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count(); this->peerData["status"][selfId] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
// msg to peer // msg to peer
string myId = devSn + ":0:0"; string myId = devSn + ":0:0";
...@@ -185,7 +182,7 @@ private: ...@@ -185,7 +182,7 @@ private:
// message to other peer // message to other peer
// check peer status // check peer status
vector<vector<uint8_t> >v = {body[1], body[0], body[2], body[3]}; vector<vector<uint8_t> >v = {body[1], body[0], body[2], body[3]};
if(peerStatus.count(peerId)!= 0 && peerStatus[peerId] != 0) { if(peerData["status"].count(peerId)!= 0 && peerData["status"][peerId] != 0) {
spdlog::info("evmgr {} route msg from {} to {}", devSn, selfId, peerId); spdlog::info("evmgr {} route msg from {} to {}", devSn, selfId, peerId);
ret = z_send_multiple(pRouter, v); ret = z_send_multiple(pRouter, v);
if(ret < 0) { if(ret < 0) {
...@@ -277,6 +274,7 @@ public: ...@@ -277,6 +274,7 @@ public:
EvMgr& operator=(EvMgr &&) = delete; EvMgr& operator=(EvMgr &&) = delete;
EvMgr() EvMgr()
{ {
peerData["status"] = json();
const char *strEnv = getenv("DR_PORT"); const char *strEnv = getenv("DR_PORT");
if(strEnv != nullptr) { if(strEnv != nullptr) {
drport = strEnv; drport = strEnv;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论