|
@@ -484,33 +484,6 @@ namespace robotics {
|
|
}
|
|
}
|
|
return *result;
|
|
return *result;
|
|
}
|
|
}
|
|
- static void logger(bool success, bool is_out, nexus_net_message value) {
|
|
|
|
- static std::map<std::uint8_t, std::string> g_msg_type = {
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::AUTHENTICATE, "身份认证"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::REPAUTHENTICATE, "身份认证响应"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::SUBSCRIBE, "订阅"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::REPSUBSCRIBE, "订阅响应"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::REMOVESUBSCRIBE, "删除订阅"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::PUBLISHER, "发布"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::REPPUBLISHER, "发布响应"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::HEARTBEAT, "心跳"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::DETAILS, "详情"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::REPDETAILS, "详情响应"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::FOLLOW, "关注"},
|
|
|
|
- {(std::uint8_t)nexus_net_msg_type_enum::REPFOLLOW, "关注响应"}
|
|
|
|
- };
|
|
|
|
- auto config = read();
|
|
|
|
- auto it = std::find_if(config.loggers.begin(), config.loggers.end(), [=](auto& it) {
|
|
|
|
- return it.type == value.msg_type && it.enable; });
|
|
|
|
- if (it != config.loggers.end()) {
|
|
|
|
- if (success) {
|
|
|
|
- LOG_INFO << (is_out ? "接收成功" : "发送成功") << ",消息类型:" << g_msg_type[value.msg_type] << " 消息ID:" << value.msg_id << " 事件:" << value.route << " 路由:" << value.routes;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- LOG_ERROR << (is_out ? "接收失败" : "发送失败") << ",消息类型:" << g_msg_type[value.msg_type] << " 消息ID:" << value.msg_id << " 事件:" << value.route << " 路由:" << value.routes;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
};
|
|
};
|
|
/**
|
|
/**
|
|
* @brief 客户端
|
|
* @brief 客户端
|
|
@@ -859,6 +832,14 @@ namespace robotics {
|
|
* @brief 关注事件
|
|
* @brief 关注事件
|
|
*/
|
|
*/
|
|
v3::delegates<std::vector<std::string>> follow_event;
|
|
v3::delegates<std::vector<std::string>> follow_event;
|
|
|
|
+ /**
|
|
|
|
+ * @brief 错误
|
|
|
|
+ */
|
|
|
|
+ v3::delegates<std::string const&> error_event;
|
|
|
|
+ /**
|
|
|
|
+ * @brief
|
|
|
|
+ */
|
|
|
|
+ v3::delegates<std::string const&> info_event;
|
|
private:
|
|
private:
|
|
/**
|
|
/**
|
|
* @brief 构造
|
|
* @brief 构造
|
|
@@ -887,7 +868,7 @@ namespace robotics {
|
|
data.routes.pop_back();
|
|
data.routes.pop_back();
|
|
}
|
|
}
|
|
client_.send(data, [=]() {
|
|
client_.send(data, [=]() {
|
|
- nexus_net_config::logger(!asio2::get_last_error(), false, data); });
|
|
|
|
|
|
+ logger(!asio2::get_last_error(), false, data); });
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
* @brief 身份认证
|
|
* @brief 身份认证
|
|
@@ -928,6 +909,40 @@ namespace robotics {
|
|
msg.args << follow_list_;
|
|
msg.args << follow_list_;
|
|
send(msg);
|
|
send(msg);
|
|
}
|
|
}
|
|
|
|
+ /**
|
|
|
|
+ * @brief 日志
|
|
|
|
+ * @param success
|
|
|
|
+ * @param is_out
|
|
|
|
+ * @param value
|
|
|
|
+ */
|
|
|
|
+ void logger(bool success, bool is_out, nexus_net_message value) {
|
|
|
|
+ static std::map<std::uint8_t, std::string> g_msg_type = {
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::AUTHENTICATE, "身份认证"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::REPAUTHENTICATE, "身份认证响应"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::SUBSCRIBE, "订阅"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::REPSUBSCRIBE, "订阅响应"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::REMOVESUBSCRIBE, "删除订阅"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::PUBLISHER, "发布"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::REPPUBLISHER, "发布响应"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::HEARTBEAT, "心跳"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::DETAILS, "详情"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::REPDETAILS, "详情响应"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::FOLLOW, "关注"},
|
|
|
|
+ {(std::uint8_t)nexus_net_msg_type_enum::REPFOLLOW, "关注响应"}
|
|
|
|
+ };
|
|
|
|
+ auto config = nexus_net_config::read();
|
|
|
|
+ auto it = std::find_if(config.loggers.begin(), config.loggers.end(), [=](auto& it) {
|
|
|
|
+ return it.type == value.msg_type && it.enable; });
|
|
|
|
+ if (it != config.loggers.end()) {
|
|
|
|
+ std::string text = fmt::format("{}{},消息类型:{},消息ID:{},事件:{},路由:{}", (is_out ? "接收" : "发送"), (success ? "成功" : "失败"), g_msg_type[value.msg_type], value.msg_id, value.route, v3::utils::join(value.routes, ","));
|
|
|
|
+ if (success) {
|
|
|
|
+ info_event(text);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ error_event(text);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
private:
|
|
private:
|
|
void on_connect(bool success, std::string const& msg) {
|
|
void on_connect(bool success, std::string const& msg) {
|
|
if (success) {
|
|
if (success) {
|
|
@@ -943,8 +958,7 @@ namespace robotics {
|
|
is_heartbeat_ = false;
|
|
is_heartbeat_ = false;
|
|
}
|
|
}
|
|
void do_work_nexus_net_message(nexus_net_message data) {
|
|
void do_work_nexus_net_message(nexus_net_message data) {
|
|
- nexus_net_config::logger(true, true, data);
|
|
|
|
-
|
|
|
|
|
|
+ logger(true, true, data);
|
|
try {
|
|
try {
|
|
switch ((nexus_net_msg_type_enum)data.msg_type) {
|
|
switch ((nexus_net_msg_type_enum)data.msg_type) {
|
|
case nexus_net_msg_type_enum::REPAUTHENTICATE: on_authenticate(data); break;
|
|
case nexus_net_msg_type_enum::REPAUTHENTICATE: on_authenticate(data); break;
|
|
@@ -955,7 +969,7 @@ namespace robotics {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (std::exception const& ec) {
|
|
catch (std::exception const& ec) {
|
|
- LOG_ERROR << ec;
|
|
|
|
|
|
+ error_event(ec.what());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void on_timeout() {
|
|
void on_timeout() {
|
|
@@ -966,11 +980,11 @@ namespace robotics {
|
|
bool success = false;
|
|
bool success = false;
|
|
try {
|
|
try {
|
|
data.args >> success;
|
|
data.args >> success;
|
|
|
|
+ info_event(std::string("订阅状态:") + (success ? "成功" : "失败"));
|
|
}
|
|
}
|
|
catch (std::exception const& ec) {
|
|
catch (std::exception const& ec) {
|
|
- LOG_ERROR << ec;
|
|
|
|
|
|
+ error_event(std::string("订阅错误:") + ec.what());
|
|
}
|
|
}
|
|
- LOG_INFO << "订阅状态:" << (success ? "成功" : "失败");
|
|
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
* @brief 授权响应
|
|
* @brief 授权响应
|
|
@@ -1033,7 +1047,7 @@ namespace robotics {
|
|
follow_event(follows);
|
|
follow_event(follows);
|
|
}
|
|
}
|
|
catch (std::exception const& ec) {
|
|
catch (std::exception const& ec) {
|
|
- LOG_ERROR << "解析关注节点失败:" << ec;
|
|
|
|
|
|
+ error_event(std::string("解析关注节点失败:") + ec.what());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private:
|
|
private:
|