@@ -310,10 +310,22 @@ void Writer::write_action_feedback_notification(
310310 instanceHandle << msg.instanceHandle ;
311311 if (action_feedback_notification_callback_ && prepare_json_data_ (msg, dyn_type, json_data))
312312 {
313+ UUID uuid;
314+ try
315+ {
316+ uuid = json_to_uuid (json_data[msg.topic .topic_name ()][" data" ][instanceHandle.str ()][" goal_id" ]);
317+ }
318+ catch (const nlohmann::json::exception& e)
319+ {
320+ EPROSIMA_LOG_ERROR (DDSENABLER_WRITER ,
321+ " Error parsing UUID from JSON: " << e.what ());
322+ return ;
323+ }
324+
313325 action_feedback_notification_callback_ (
314326 action_name.c_str (),
315327 json_data[msg.topic .topic_name ()][" data" ][instanceHandle.str ()][" feedback" ].dump (4 ).c_str (),
316- json_to_uuid (json_data[msg. topic . topic_name ()][ " data " ][instanceHandle. str ()][ " goal_id " ]) ,
328+ uuid ,
317329 msg.publish_time .to_ns ()
318330 );
319331 }
@@ -442,8 +454,19 @@ void Writer::write_action_cancel_reply_notification(
442454 const auto & goals = json_data[msg.topic .topic_name ()][" data" ][instanceHandle.str ()][" goals_canceling" ];
443455 for (const auto & goal : goals)
444456 {
445- UUID msg_action_id = json_to_uuid (goal[" goal_id" ]);
446- if (is_UUID_active_callback_ && !is_UUID_active_callback_ (action_name, msg_action_id))
457+ UUID uuid;
458+ try
459+ {
460+ uuid = json_to_uuid (goal[" goal_id" ]);
461+ }
462+ catch (const nlohmann::json::exception& e)
463+ {
464+ EPROSIMA_LOG_ERROR (DDSENABLER_WRITER ,
465+ " Error parsing UUID from JSON: " << e.what ());
466+ return ;
467+ }
468+
469+ if (is_UUID_active_callback_ && !is_UUID_active_callback_ (action_name, uuid))
447470 {
448471 continue ;
449472 }
@@ -452,7 +475,7 @@ void Writer::write_action_cancel_reply_notification(
452475 {
453476 action_status_notification_callback_ (
454477 action_name.c_str (),
455- msg_action_id ,
478+ uuid ,
456479 status_code,
457480 status_message.c_str (),
458481 msg.publish_time .to_ns ()
@@ -486,7 +509,18 @@ void Writer::write_action_status_notification(
486509 const auto & list = json_data[msg.topic .topic_name ()][" data" ][instanceHandle.str ()][" status_list" ];
487510 for (const auto & status : list)
488511 {
489- UUID uuid = json_to_uuid (status[" goal_info" ][" goal_id" ]);
512+ UUID uuid;
513+ try
514+ {
515+ uuid = json_to_uuid (status[" goal_info" ][" goal_id" ]);
516+ }
517+ catch (const nlohmann::json::exception& e)
518+ {
519+ EPROSIMA_LOG_ERROR (DDSENABLER_WRITER ,
520+ " Error parsing UUID from JSON: " << e.what ());
521+ return ;
522+ }
523+
490524 if (is_UUID_active_callback_ && !is_UUID_active_callback_ (action_name, uuid))
491525 {
492526 continue ;
0 commit comments