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

init

上级 0352f0aa
...@@ -118,8 +118,7 @@ private: ...@@ -118,8 +118,7 @@ private:
if(!found) { if(!found) {
spdlog::error("evslicer {}: no valid config found. retrying load config...", devSn); spdlog::error("evslicer {}: no valid config found. retrying load config...", devSn);
this_thread::sleep_for(chrono::seconds(3)); goto togo_sc;
continue;
} }
selfId = devSn + ":evslicer:" + to_string(iid); selfId = devSn + ":evslicer:" + to_string(iid);
...@@ -159,50 +158,12 @@ private: ...@@ -159,50 +158,12 @@ private:
ret = system((string("mkdir -p ") + urlOut).c_str()); ret = system((string("mkdir -p ") + urlOut).c_str());
if(ret == -1) { if(ret == -1) {
spdlog::error("failed to create {} dir", urlOut); spdlog::error("failed to create {} dir", urlOut);
return -1; exit(1);
} }
urlPub = string("tcp://") + evpuller["addr"].get<string>() + ":" + to_string(evpuller["port-pub"]); urlPub = string("tcp://") + evpuller["addr"].get<string>() + ":" + to_string(evpuller["port-pub"]);
urlRouter = string("tcp://") + evmgr["addr"].get<string>() + ":" + to_string(evmgr["port-router"]); urlRouter = string("tcp://") + evmgr["addr"].get<string>() + ":" + to_string(evmgr["port-router"]);
spdlog::info("evslicer {} will connect to {} for sub, {} for router", selfId, urlPub, urlRouter); spdlog::info("evslicer {} will connect to {} for sub, {} for router", selfId, urlPub, urlRouter);
}
catch(exception &e) {
spdlog::error("evslicer {} exception in init {:s} retrying", selfId, e.what());
this_thread::sleep_for(chrono::seconds(3));
continue;
}
inited = true;
}
return 0;
}
int ping()
{
// send hello to router
int ret = 0;
vector<vector<uint8_t> >body;
// since identity is auto set
body.push_back(str2body(mgrSn+":0:0"));
body.push_back(str2body(EV_MSG_META_PING)); // blank meta
body.push_back(str2body(MSG_HELLO));
ret = z_send_multiple(pDealer, body);
if(ret < 0) {
spdlog::error("evslicer {} failed to send multiple: {}", selfId, zmq_strerror(zmq_errno()));
//TODO:
}
else {
spdlog::info("evslicer {} sent hello to router: {}", selfId, mgrSn);
}
return ret;
}
int setupMq()
{
int ret = 0;
// setup sub // setup sub
pSubCtx = zmq_ctx_new(); pSubCtx = zmq_ctx_new();
...@@ -210,12 +171,12 @@ private: ...@@ -210,12 +171,12 @@ private:
ret = zmq_setsockopt(pSub, ZMQ_SUBSCRIBE, "", 0); ret = zmq_setsockopt(pSub, ZMQ_SUBSCRIBE, "", 0);
if(ret != 0) { if(ret != 0) {
spdlog::error("evslicer {} failed set setsockopt: {}", selfId, urlPub); spdlog::error("evslicer {} failed set setsockopt: {}", selfId, urlPub);
return -1; goto togo_sc;
} }
ret = zmq_connect(pSub, urlPub.c_str()); ret = zmq_connect(pSub, urlPub.c_str());
if(ret != 0) { if(ret != 0) {
spdlog::error("evslicer {} failed connect pub: {}", selfId, urlPub); spdlog::error("evslicer {} failed connect pub: {}", selfId, urlPub);
return -2; goto togo_sc;
} }
// setup dealer // setup dealer
...@@ -226,28 +187,53 @@ private: ...@@ -226,28 +187,53 @@ private:
ret += zmq_setsockopt (pDealer, ZMQ_ROUTING_ID, selfId.c_str(), selfId.size()); ret += zmq_setsockopt (pDealer, ZMQ_ROUTING_ID, selfId.c_str(), selfId.size());
if(ret < 0) { if(ret < 0) {
spdlog::error("evpusher {} {} failed setsockopts router: {}", selfId, urlRouter); spdlog::error("evpusher {} {} failed setsockopts router: {}", selfId, urlRouter);
return -3; goto togo_sc;
} }
if(ret < 0) { if(ret < 0) {
spdlog::error("evslicer {} failed setsockopts router: {}", selfId, urlRouter); spdlog::error("evslicer {} failed setsockopts router: {}", selfId, urlRouter);
return -3; goto togo_sc;
} }
ret = zmq_connect(pDealer, urlRouter.c_str()); ret = zmq_connect(pDealer, urlRouter.c_str());
if(ret != 0) { if(ret != 0) {
spdlog::error("evslicer {} failed connect dealer: {}", selfId, urlRouter); spdlog::error("evslicer {} failed connect dealer: {}", selfId, urlRouter);
return -4; goto togo_sc;
} }
//ping //ping
ret = ping(); ret = ping();
// TODO: don't need this anymore, since I've used the draft feature of ZOUTER_NOTIFICATION instead }
// thPing = thread([&,this]() { catch(exception &e) {
// while(true) { spdlog::error("evslicer {} exception in init {:s} retrying", selfId, e.what());
// this_thread::sleep_for(chrono::seconds(EV_HEARTBEAT_SECONDS-2)); this_thread::sleep_for(chrono::seconds(3));
// ping(); continue;
// } }
// }); inited = true;
break;
togo_sc:
this_thread::sleep_for(chrono::seconds(3));
continue;
}
return ret;
}
// thPing.detach(); int ping()
{
// send hello to router
int ret = 0;
vector<vector<uint8_t> >body;
// since identity is auto set
body.push_back(str2body(mgrSn+":0:0"));
body.push_back(str2body(EV_MSG_META_PING)); // blank meta
body.push_back(str2body(MSG_HELLO));
ret = z_send_multiple(pDealer, body);
if(ret < 0) {
spdlog::error("evslicer {} failed to send multiple: {}", selfId, zmq_strerror(zmq_errno()));
//TODO:
}
else {
spdlog::info("evslicer {} sent hello to router: {}", selfId, mgrSn);
}
return ret; return ret;
} }
...@@ -485,7 +471,6 @@ public: ...@@ -485,7 +471,6 @@ public:
EvSlicer() EvSlicer()
{ {
init(); init();
setupMq();
getInputFormat(); getInputFormat();
setupStream(); setupStream();
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论