未验证 提交 10239e32 编写于 作者: S siyangy 提交者: GitHub

Dreamview: improve logging (#3922)

* Dreamview: improve logging

* fix lint
上级 c019ba3d
......@@ -106,9 +106,9 @@ Status Dreamview::Init() {
server_.reset(new CivetServer(options));
image_.reset(new ImageHandler());
websocket_.reset(new WebSocketHandler());
map_ws_.reset(new WebSocketHandler());
point_cloud_ws_.reset(new WebSocketHandler());
websocket_.reset(new WebSocketHandler("SimWorld"));
map_ws_.reset(new WebSocketHandler("Map"));
point_cloud_ws_.reset(new WebSocketHandler("PointCloud"));
map_service_.reset(new MapService());
sim_control_.reset(new SimControl(map_service_.get()));
......
......@@ -34,7 +34,8 @@ void WebSocketHandler::handleReadyState(CivetServer *server, Connection *conn) {
{
std::unique_lock<std::mutex> lock(mutex_);
connections_.emplace(conn, std::make_shared<std::mutex>());
AINFO << "Accepted connection. Total connections: " << connections_.size();
AINFO << name_ << ": Accepted connection. Total connections: "
<< connections_.size();
}
// Trigger registered new connection handlers.
......@@ -56,7 +57,8 @@ void WebSocketHandler::handleClose(CivetServer *server,
std::unique_lock<std::mutex> lock(*connection_lock);
connections_.erase(connection);
}
AINFO << "Connection closed. Total connections: " << connections_.size();
AINFO << name_
<< ": Connection closed. Total connections: " << connections_.size();
}
}
......@@ -94,7 +96,8 @@ bool WebSocketHandler::SendData(Connection *conn, const std::string &data,
{
std::unique_lock<std::mutex> lock(mutex_);
if (!ContainsKey(connections_, conn)) {
AERROR << "Trying to send to an uncached connection, skipping.";
AERROR << name_
<< ": Trying to send to an uncached connection, skipping.";
return false;
}
// Copy the lock so that it still exists if the connection is closed after
......@@ -122,8 +125,9 @@ bool WebSocketHandler::SendData(Connection *conn, const std::string &data,
// Note that while we are holding the connection lock, the connection won't be
// closed and removed.
int ret;
PERF_BLOCK(StrCat("Writing ", data.size(), " bytes via websocket took"),
0.1) {
PERF_BLOCK(
StrCat(name_, ": Writing ", data.size(), " bytes via websocket took"),
0.1) {
ret = mg_websocket_write(conn, op_code, data.c_str(), data.size());
}
connection_lock->unlock();
......@@ -144,7 +148,8 @@ bool WebSocketHandler::SendData(Connection *conn, const std::string &data,
msg = StrCat("Expect to send ", data.size(), " bytes. But sent ", ret,
" bytes");
}
AWARN << "Failed to send data via websocket connection. Reason: " << msg;
AWARN << name_
<< ": Failed to send data via websocket connection. Reason: " << msg;
return false;
}
......@@ -181,7 +186,7 @@ bool WebSocketHandler::handleData(CivetServer *server, Connection *conn,
result = handleBinaryData(conn, data_.str());
break;
default:
AERROR << "Unknown WebSocket bits flag: " << bits;
AERROR << name_ << ": Unknown WebSocket bits flag: " << bits;
break;
}
......
......@@ -56,6 +56,8 @@ class WebSocketHandler : public CivetWebSocketHandler {
using MessageHandler = std::function<void(const Json &, Connection *)>;
using ConnectionReadyHandler = std::function<void(Connection *)>;
explicit WebSocketHandler(const std::string &name) : name_(name) {}
/**
* @brief Callback method for when the client intends to establish a websocket
* connection, before websocket handshake.
......@@ -149,6 +151,8 @@ class WebSocketHandler : public CivetWebSocketHandler {
}
private:
const std::string name_;
// Message handlers keyed by message type.
std::unordered_map<std::string, MessageHandler> message_handlers_;
// New connection ready handlers.
......
......@@ -53,7 +53,7 @@ class MockClient {
};
std::vector<std::string> MockClient::received_messages_;
static WebSocketHandler handler;
static WebSocketHandler handler("Test");
TEST(WebSocketTest, IntegrationTest) {
// NOTE: Here a magic number is picked up as the port, which is not ideal but
......
......@@ -272,7 +272,7 @@ void SimulationWorldService::Update() {
UpdateWithLatestObserved("PerceptionObstacles",
AdapterManager::GetPerceptionObstacles());
UpdateWithLatestObserved("PerceptionTrafficLight",
AdapterManager::GetTrafficLightDetection());
AdapterManager::GetTrafficLightDetection(), false);
UpdateWithLatestObserved("PredictionObstacles",
AdapterManager::GetPrediction());
UpdateWithLatestObserved("Planning", AdapterManager::GetPlanning());
......
......@@ -185,10 +185,12 @@ class SimulationWorldService {
*/
template <typename AdapterType>
void UpdateWithLatestObserved(const std::string &adapter_name,
AdapterType *adapter) {
AdapterType *adapter, bool logging = true) {
if (adapter->Empty()) {
AINFO_EVERY(100) << adapter_name
<< " adapter has not received any data yet.";
if (logging) {
AINFO_EVERY(100) << adapter_name
<< " adapter has not received any data yet.";
}
return;
}
......
......@@ -92,6 +92,7 @@ void SimulationWorldUpdater::RegisterMessageHandlers() {
websocket_->RegisterMessageHandler(
"Binary",
[this](const std::string &data, WebSocketHandler::Connection *conn) {
// Navigation info in binary format
apollo::relative_map::NavigationInfo navigation_info;
if (navigation_info.ParseFromString(data)) {
AdapterManager::FillNavigationHeader(FLAGS_dreamview_module_name,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册