summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2020-10-09 12:36:35 -0400
committerJackLivio <jack@livio.io>2020-10-09 12:36:35 -0400
commit2ebd1128dc6c88c7e861afbf605726a1c985a669 (patch)
treebc7fee01fec63f6433688ea1a801b9227662f2aa
parent5c72cddc353aadef06e89064c53c1ec6b2467d25 (diff)
downloadsdl_core-fix/hmi_msg_failed_send_error_handling.tar.gz
Add error handling for failed hmi message sendfix/hmi_msg_failed_send_error_handling
-rw-r--r--src/components/application_manager/src/rpc_handler_impl.cc20
-rw-r--r--src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h2
-rw-r--r--src/components/hmi_message_handler/src/mb_controller.cc9
-rw-r--r--src/components/hmi_message_handler/src/messagebroker_adapter.cc4
4 files changed, 29 insertions, 6 deletions
diff --git a/src/components/application_manager/src/rpc_handler_impl.cc b/src/components/application_manager/src/rpc_handler_impl.cc
index b8dad59830..4137ab93bb 100644
--- a/src/components/application_manager/src/rpc_handler_impl.cc
+++ b/src/components/application_manager/src/rpc_handler_impl.cc
@@ -283,6 +283,26 @@ void RPCHandlerImpl::OnMessageReceived(
void RPCHandlerImpl::OnErrorSending(
hmi_message_handler::MessageSharedPointer message) {
+ SDL_LOG_AUTO_TRACE();
+ smart_objects::SmartObjectSPtr smart_object =
+ std::make_shared<smart_objects::SmartObject>();
+ std::string warning_info;
+ bool allow_unknown_parameters = true;
+ if (ConvertMessageToSO(
+ *message, *smart_object, warning_info, allow_unknown_parameters)) {
+ (*smart_object)[strings::params][strings::message_type] =
+ application_manager::MessageType::kResponse;
+ (*smart_object).erase(strings::msg_params);
+ (*smart_object)[strings::params][hmi_response::code] =
+ hmi_apis::Common_Result::GENERIC_ERROR;
+ (*smart_object)[strings::params][strings::error_msg] =
+ std::string("Error sending message, mb component not registered");
+
+ if (!app_manager_.GetRPCService().ManageHMICommand(
+ smart_object, commands::Command::SOURCE_HMI, warning_info)) {
+ SDL_LOG_ERROR("Received command didn't run successfully");
+ }
+ }
return;
}
diff --git a/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h b/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h
index 2b7f9d6976..5a10ccee38 100644
--- a/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h
+++ b/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h
@@ -98,7 +98,7 @@ class CMessageBrokerController {
void sendResponse(Json::Value& message);
- void sendJsonMessage(Json::Value& message);
+ bool sendJsonMessage(Json::Value& message);
void subscribeTo(std::string property);
diff --git a/src/components/hmi_message_handler/src/mb_controller.cc b/src/components/hmi_message_handler/src/mb_controller.cc
index bea05cde1a..e74f719780 100644
--- a/src/components/hmi_message_handler/src/mb_controller.cc
+++ b/src/components/hmi_message_handler/src/mb_controller.cc
@@ -176,13 +176,13 @@ void CMessageBrokerController::sendResponse(Json::Value& message) {
}
}
-void CMessageBrokerController::sendJsonMessage(Json::Value& message) {
+bool CMessageBrokerController::sendJsonMessage(Json::Value& message) {
if (isNotification(message)) {
sendNotification(message);
- return;
+ return true;
} else if (isResponse(message)) {
sendResponse(message);
- return;
+ return true;
}
// Send request
@@ -205,10 +205,11 @@ void CMessageBrokerController::sendJsonMessage(Json::Value& message) {
if (!ws) {
SDL_LOG_ERROR(
"A controller is not found for the method: " << component_name);
- return;
+ return false;
}
ws->sendJsonMessage(message);
+ return true;
}
void CMessageBrokerController::subscribeTo(std::string property) {}
diff --git a/src/components/hmi_message_handler/src/messagebroker_adapter.cc b/src/components/hmi_message_handler/src/messagebroker_adapter.cc
index ca3d03dd91..cc13341ca0 100644
--- a/src/components/hmi_message_handler/src/messagebroker_adapter.cc
+++ b/src/components/hmi_message_handler/src/messagebroker_adapter.cc
@@ -70,7 +70,9 @@ void MessageBrokerAdapter::SendMessageToHMI(
return;
}
- sendJsonMessage(json_value);
+ if (!sendJsonMessage(json_value)) {
+ handler()->OnErrorSending(message);
+ }
}
void MessageBrokerAdapter::processResponse(std::string method,