make get_actual_qos return a rclcpp::QoS (#883)
* make get_actual_qos return a rclcpp::QoS Signed-off-by: William Woodall <william@osrfoundation.org> * make simpler following suggestion from review Signed-off-by: William Woodall <william@osrfoundation.org>
This commit is contained in:
parent
9b4f049277
commit
27a97e868c
4 changed files with 14 additions and 7 deletions
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "rclcpp/macros.hpp"
|
#include "rclcpp/macros.hpp"
|
||||||
#include "rclcpp/mapped_ring_buffer.hpp"
|
#include "rclcpp/mapped_ring_buffer.hpp"
|
||||||
|
#include "rclcpp/qos.hpp"
|
||||||
#include "rclcpp/qos_event.hpp"
|
#include "rclcpp/qos_event.hpp"
|
||||||
#include "rclcpp/type_support_decl.hpp"
|
#include "rclcpp/type_support_decl.hpp"
|
||||||
#include "rclcpp/visibility_control.hpp"
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
@ -153,10 +154,11 @@ public:
|
||||||
* If the underlying setting in use can't be represented in ROS terms,
|
* If the underlying setting in use can't be represented in ROS terms,
|
||||||
* it will be set to RMW_QOS_POLICY_*_UNKNOWN.
|
* it will be set to RMW_QOS_POLICY_*_UNKNOWN.
|
||||||
* May throw runtime_error when an unexpected error occurs.
|
* May throw runtime_error when an unexpected error occurs.
|
||||||
|
*
|
||||||
* \return The actual qos settings.
|
* \return The actual qos settings.
|
||||||
*/
|
*/
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rmw_qos_profile_t
|
rclcpp::QoS
|
||||||
get_actual_qos() const;
|
get_actual_qos() const;
|
||||||
|
|
||||||
/// Compare this publisher to a gid.
|
/// Compare this publisher to a gid.
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
#include "rclcpp/any_subscription_callback.hpp"
|
#include "rclcpp/any_subscription_callback.hpp"
|
||||||
#include "rclcpp/macros.hpp"
|
#include "rclcpp/macros.hpp"
|
||||||
|
#include "rclcpp/qos.hpp"
|
||||||
#include "rclcpp/qos_event.hpp"
|
#include "rclcpp/qos_event.hpp"
|
||||||
#include "rclcpp/type_support_decl.hpp"
|
#include "rclcpp/type_support_decl.hpp"
|
||||||
#include "rclcpp/visibility_control.hpp"
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
@ -106,10 +107,11 @@ public:
|
||||||
* If the underlying setting in use can't be represented in ROS terms,
|
* If the underlying setting in use can't be represented in ROS terms,
|
||||||
* it will be set to RMW_QOS_POLICY_*_UNKNOWN.
|
* it will be set to RMW_QOS_POLICY_*_UNKNOWN.
|
||||||
* May throw runtime_error when an unexpected error occurs.
|
* May throw runtime_error when an unexpected error occurs.
|
||||||
|
*
|
||||||
* \return The actual qos settings.
|
* \return The actual qos settings.
|
||||||
*/
|
*/
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rmw_qos_profile_t
|
rclcpp::QoS
|
||||||
get_actual_qos() const;
|
get_actual_qos() const;
|
||||||
|
|
||||||
/// Borrow a new message.
|
/// Borrow a new message.
|
||||||
|
|
|
@ -205,7 +205,7 @@ PublisherBase::get_intra_process_subscription_count() const
|
||||||
return ipm->get_subscription_count(intra_process_publisher_id_);
|
return ipm->get_subscription_count(intra_process_publisher_id_);
|
||||||
}
|
}
|
||||||
|
|
||||||
rmw_qos_profile_t
|
rclcpp::QoS
|
||||||
PublisherBase::get_actual_qos() const
|
PublisherBase::get_actual_qos() const
|
||||||
{
|
{
|
||||||
const rmw_qos_profile_t * qos = rcl_publisher_get_actual_qos(&publisher_handle_);
|
const rmw_qos_profile_t * qos = rcl_publisher_get_actual_qos(&publisher_handle_);
|
||||||
|
@ -214,7 +214,8 @@ PublisherBase::get_actual_qos() const
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
throw std::runtime_error(msg);
|
throw std::runtime_error(msg);
|
||||||
}
|
}
|
||||||
return *qos;
|
|
||||||
|
return rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(*qos), *qos);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -264,7 +265,8 @@ PublisherBase::setup_intra_process(
|
||||||
const rcl_publisher_options_t & intra_process_options)
|
const rcl_publisher_options_t & intra_process_options)
|
||||||
{
|
{
|
||||||
// Intraprocess configuration is not allowed with "durability" qos policy non "volatile".
|
// Intraprocess configuration is not allowed with "durability" qos policy non "volatile".
|
||||||
if (this->get_actual_qos().durability != RMW_QOS_POLICY_DURABILITY_VOLATILE) {
|
auto actual_durability = this->get_actual_qos().get_rmw_qos_profile().durability;
|
||||||
|
if (actual_durability != RMW_QOS_POLICY_DURABILITY_VOLATILE) {
|
||||||
throw std::invalid_argument(
|
throw std::invalid_argument(
|
||||||
"intraprocess communication is not allowed with durability qos policy non-volatile");
|
"intraprocess communication is not allowed with durability qos policy non-volatile");
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,7 @@ SubscriptionBase::get_event_handlers() const
|
||||||
return event_handlers_;
|
return event_handlers_;
|
||||||
}
|
}
|
||||||
|
|
||||||
rmw_qos_profile_t
|
rclcpp::QoS
|
||||||
SubscriptionBase::get_actual_qos() const
|
SubscriptionBase::get_actual_qos() const
|
||||||
{
|
{
|
||||||
const rmw_qos_profile_t * qos = rcl_subscription_get_actual_qos(subscription_handle_.get());
|
const rmw_qos_profile_t * qos = rcl_subscription_get_actual_qos(subscription_handle_.get());
|
||||||
|
@ -138,7 +138,8 @@ SubscriptionBase::get_actual_qos() const
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
throw std::runtime_error(msg);
|
throw std::runtime_error(msg);
|
||||||
}
|
}
|
||||||
return *qos;
|
|
||||||
|
return rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(*qos), *qos);
|
||||||
}
|
}
|
||||||
|
|
||||||
const rosidl_message_type_support_t &
|
const rosidl_message_type_support_t &
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue