提交 454e9e39 authored 作者: blu's avatar blu

feature: report msg

上级 7c5ff89c
......@@ -808,6 +808,8 @@ protected:
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
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;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
......
......@@ -311,9 +311,37 @@ protected:
spdlog::info("evpuller {} openning stream: {}", selfId, urlIn);
if ((ret = avformat_open_input(&pAVFormatInput, urlIn.c_str(), NULL, &optsIn)) < 0) {
spdlog::error("evpuller {} Could not open input stream {}", selfId, urlIn);
string msg = fmt::format("evpuller {} Could not open input stream {}: {}", selfId, urlIn, av_err2str(ret));
json meta;
json data;
data["msg"] = msg;
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVOPENINPUT;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_FATAL;
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_FATAL;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
spdlog::error(msg);
// TODO: message report to cloud
exit(1);
}else{
string msg = fmt::format("evpuller {} successfully openned input stream {}", selfId, urlIn);
json meta;
json data;
data["msg"] = msg;
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVOPENINPUT;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_INFO;
data["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
data["status"] = "recover";
meta["type"] = EV_MSG_META_TYPE_REPORT;
meta["value"] = EV_MSG_META_VALUE_REPORT_LEVEL_FATAL;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
spdlog::info(msg);
}
spdlog::info("evpuller {} finding stream info: {}", selfId, urlIn);
......
......@@ -316,6 +316,8 @@ private:
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_FATAL;
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_FATAL;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
......@@ -386,7 +388,6 @@ private:
spdlog::error("evpusher {} {} failed allocating output stream", devSn,iid);
ret = avio_open2(&pAVFormatRemux->pb, urlOut.c_str(), AVIO_FLAG_WRITE, NULL, &pOptsRemux);
if (ret < 0) {
spdlog::error("evpusher {} {} could not open output file '%s'", devSn, iid, urlOut);
// TODO: message report to cloud
string msg = fmt::format("evpusher {} failed to open output stream \"{}\": {}, {}", selfId, urlOut, ret, av_err2str(ret));
json meta;
......@@ -395,6 +396,8 @@ private:
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_FATAL;
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_FATAL;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
......@@ -443,6 +446,7 @@ protected:
zmq_msg_t msg;
AVPacket packet;
uint64_t pktCnt = 0;
bool bStatsSent = false;
while (true) {
ret =zmq_msg_init(&msg);
if(ret != 0) {
......@@ -504,7 +508,10 @@ protected:
data["msg"] = msg;
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVWRITEPIPE;
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;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
......@@ -519,6 +526,23 @@ protected:
pktCnt = 0;
continue;
}
}else{
if(!bStatsSent){
bStatsSent = true;
string msg = fmt::format("evpusher {} start pushing {}", selfId, urlOut);
json meta;
json data;
data["msg"] = msg;
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVWRITEPIPE;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_INFO;
data["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
data["status"] = "recover";
meta["type"] = EV_MSG_META_TYPE_REPORT;
meta["value"] = EV_MSG_META_VALUE_REPORT_LEVEL_FATAL;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
}
}
}
av_write_trailer(pAVFormatRemux);
......
......@@ -494,6 +494,7 @@ protected:
zmq_msg_t msg;
AVPacket packet;
while (true) {
bool bStatsSent = false;
auto start = chrono::system_clock::now();
auto end = start;
int ts = chrono::duration_cast<chrono::seconds>(start.time_since_epoch()).count();
......@@ -587,13 +588,16 @@ protected:
av_packet_unref(&packet);
if (ret < 0) {
// TODO: report message to cloud
string msg = fmt::format("evslicer {} error write stream, resetting:{}", selfId, av_err2str(ret));
string msg = fmt::format("evslicer {} error write file, resetting:{}", selfId, av_err2str(ret));
json meta;
json data;
data["msg"] = msg;
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVWRITEPIPE;
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;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
......@@ -609,6 +613,23 @@ protected:
pktCnt = 0;
break;
}
}else{
if(!bStatsSent) {
bStatsSent = true;
string msg = fmt::format("evslicer {} starting write file", selfId);
json meta;
json data;
data["msg"] = msg;
data["modId"] = selfId;
data["type"] = EV_MSG_META_TYPE_REPORT;
data["catId"] = EV_MSG_REPORT_CATID_AVWRITEPIPE;
data["level"] = EV_MSG_META_VALUE_REPORT_LEVEL_INFO;
data["time"] = chrono::duration_cast<chrono::seconds>(chrono::system_clock::now().time_since_epoch()).count();
data["status"] = "recover";
meta["type"] = EV_MSG_META_TYPE_REPORT;
meta["value"] = EV_MSG_META_VALUE_REPORT_LEVEL_INFO;
z_send(pDaemon, "evcloudsvc", meta.dump(), data.dump());
}
}
end = chrono::system_clock::now();
......
......@@ -37,6 +37,11 @@ namespace zmqhelper {
#define EV_MSG_META_TYPE_REPORT "report"
#define EV_MSG_REPORT_CATID_AVOPENINPUT "AV_OPENINPUT"
#define EV_MSG_REPORT_CATID_AVWRITEHEADER "AV_WRITEHEADER"
#define EV_MSG_REPORT_CATID_AVEOF "AV_EOF"
#define EV_MSG_REPORT_CATID_AVWRITEPIPE "AV_WRITEPIPE"
#define EV_MSG_META_VALUE_REPORT_LEVEL_INFO "info"
#define EV_MSG_META_VALUE_REPORT_LEVEL_DEBUG "debug"
#define EV_MSG_META_VALUE_REPORT_LEVEL_WARN "warn"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论