@@ -390,6 +390,7 @@ rmw_publisher_get_actual_qos(
390390 RMW_SET_ERROR_MSG (" publisher internal dds publisher is invalid" );
391391 return RMW_RET_ERROR;
392392 }
393+
393394 switch (dds_qos.history .kind ) {
394395 case DDS_KEEP_LAST_HISTORY_QOS:
395396 qos->history = RMW_QOS_POLICY_HISTORY_KEEP_LAST;
@@ -401,6 +402,20 @@ rmw_publisher_get_actual_qos(
401402 qos->history = RMW_QOS_POLICY_HISTORY_UNKNOWN;
402403 break ;
403404 }
405+ qos->depth = static_cast <size_t >(dds_qos.history .depth );
406+
407+ switch (dds_qos.reliability .kind ) {
408+ case DDS_BEST_EFFORT_RELIABILITY_QOS:
409+ qos->reliability = RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT;
410+ break ;
411+ case DDS_RELIABLE_RELIABILITY_QOS:
412+ qos->reliability = RMW_QOS_POLICY_RELIABILITY_RELIABLE;
413+ break ;
414+ default :
415+ qos->reliability = RMW_QOS_POLICY_RELIABILITY_UNKNOWN;
416+ break ;
417+ }
418+
404419 switch (dds_qos.durability .kind ) {
405420 case DDS_TRANSIENT_LOCAL_DURABILITY_QOS:
406421 qos->durability = RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL;
@@ -412,18 +427,29 @@ rmw_publisher_get_actual_qos(
412427 qos->durability = RMW_QOS_POLICY_DURABILITY_UNKNOWN;
413428 break ;
414429 }
415- switch (dds_qos.reliability .kind ) {
416- case DDS_BEST_EFFORT_RELIABILITY_QOS:
417- qos->reliability = RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT;
430+
431+ qos->deadline .sec = dds_qos.deadline .period .sec ;
432+ qos->deadline .nsec = dds_qos.deadline .period .nanosec ;
433+
434+ qos->lifespan .sec = dds_qos.lifespan .duration .sec ;
435+ qos->lifespan .nsec = dds_qos.lifespan .duration .nanosec ;
436+
437+ switch (dds_qos.liveliness .kind ) {
438+ case DDS_AUTOMATIC_LIVELINESS_QOS:
439+ qos->liveliness = RMW_QOS_POLICY_LIVELINESS_AUTOMATIC;
418440 break ;
419- case DDS_RELIABLE_RELIABILITY_QOS:
420- qos->reliability = RMW_QOS_POLICY_RELIABILITY_RELIABLE;
441+ case DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS:
442+ qos->liveliness = RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_NODE;
443+ break ;
444+ case DDS_MANUAL_BY_TOPIC_LIVELINESS_QOS:
445+ qos->liveliness = RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_TOPIC;
421446 break ;
422447 default :
423- qos->reliability = RMW_QOS_POLICY_RELIABILITY_UNKNOWN ;
448+ qos->liveliness = RMW_QOS_POLICY_LIVELINESS_UNKNOWN ;
424449 break ;
425450 }
426- qos->depth = static_cast <size_t >(dds_qos.history .depth );
451+ qos->liveliness_lease_duration .sec = dds_qos.liveliness .lease_duration .sec ;
452+ qos->liveliness_lease_duration .nsec = dds_qos.liveliness .lease_duration .nanosec ;
427453
428454 return RMW_RET_OK;
429455}
0 commit comments