10#ifndef NROS_RCLCPP_QOS_HPP
11#define NROS_RCLCPP_QOS_HPP
20#include "rclcpp/duration.hpp"
25#include "rclc/visibility_control.h"
29#include "rclcpp/logging.hpp"
202 return d.nanoseconds() <= 0
206 :
static_cast<uint32_t>((
d.nanoseconds() + 999999) / 1000000));
212 return Duration::from_nanoseconds(
static_cast<int64_t>(
ms) * 1000000);
244 depth_(10), deadline_ms_(0), lifespan_ms_(0), liveliness_lease_ms_(0),
245 avoid_ros_namespace_conventions_(0), tx_express_(0) {}
331 avoid_ros_namespace_conventions_ =
on ? 1 : 0;
340 tx_express_ =
on ? 1 : 0;
374 constexpr int depth()
const {
return depth_; }
385 return avoid_ros_namespace_conventions_ != 0;
388 constexpr bool tx_express()
const {
return tx_express_ != 0; }
414 uint8_t avoid_ros_namespace_conventions_;
447 return left.reliability() ==
right.reliability() &&
left.durability() ==
right.durability() &&
450 left.deadline().nanoseconds() ==
right.deadline().nanoseconds() &&
451 left.lifespan().nanoseconds() ==
right.lifespan().nanoseconds() &&
452 left.liveliness_lease_duration().nanoseconds() ==
453 right.liveliness_lease_duration().nanoseconds() &&
454 left.avoid_ros_namespace_conventions() ==
right.avoid_ros_namespace_conventions() &&
584 static constexpr QoS default_profile() {
return QoS(); }
587 static constexpr QoS sensor_data() {
return QoS().best_effort().keep_last(5); }
594 static constexpr QoS services_default() {
return QoS().reliable().keep_last(10); }
597 static constexpr QoS parameters() {
return QoS().reliable().keep_last(1000); }
604 static constexpr QoS parameter_events() {
return QoS().reliable().keep_last(1000); }
608 static constexpr QoS rosout() {
609 return QoS().reliable().transient_local().keep_last(1000).lifespan(
610 ::rclcpp::Duration::from_nanoseconds(10000000000LL));
618 static constexpr QoS clock() {
return QoS().best_effort().keep_last(1); }
640 f.depth = qos.depth();
646 f.liveliness_lease_ms =
qos_window_ms(qos.liveliness_lease_duration());
647 f.avoid_ros_namespace_conventions = qos.avoid_ros_namespace_conventions() ? 1 : 0;
648 f.tx_express = qos.tx_express() ? 1 : 0;
668constexpr QoS qos_all_unknown() {
700 q.deadline_ms_ =
f.deadline_ms;
701 q.lifespan_ms_ =
f.lifespan_ms;
702 q.liveliness_lease_ms_ =
f.liveliness_lease_ms;
703 q.avoid_ros_namespace_conventions_ =
f.avoid_ros_namespace_conventions;
704 q.tx_express_ =
f.tx_express;
715 return detail::qos_table::default_profile();
718 return detail::qos_table::sensor_data();
721 return detail::qos_table::services_default();
791 typedef char yes_t[1];
792 typedef char no_t[2];
795 static yes_t& probe(const ::rclcpp::QoS*);
796 static no_t& probe(...);
800 static const bool value =
sizeof(probe(arg())) ==
sizeof(yes_t);
Definition client.hpp:129
rclcpp::ClockQoS — KEEP_LAST(1), BEST_EFFORT, VOLATILE. ADOPT.
Definition qos.hpp:886
constexpr ClockQoS()
Definition qos.hpp:888
constexpr ParameterEventsQoS()
Definition qos.hpp:869
constexpr ParametersQoS()
Definition qos.hpp:857
constexpr Duration lifespan() const
The lifespan window. Duration() (zero) = infinite.
Definition qos.hpp:378
constexpr Duration deadline() const
The deadline window. Duration() (zero) = infinite.
Definition qos.hpp:376
constexpr QoS & liveliness_lease_duration(const Duration &d)
Definition qos.hpp:323
constexpr QoS & keep_all()
Use KEEP_ALL history (bounded by transport).
Definition qos.hpp:290
constexpr QoS()
Definition qos.hpp:241
constexpr QoS & deadline(const Duration &d)
Definition qos.hpp:302
constexpr Duration liveliness_lease_duration() const
The liveliness lease window. Duration() (zero) = infinite.
Definition qos.hpp:380
constexpr bool tx_express() const
Whether this publisher's samples bypass transport tx batching.
Definition qos.hpp:388
constexpr QoS & best_effort()
Set reliability to BEST_EFFORT (fire-and-forget; default for sensors).
Definition qos.hpp:264
constexpr QoS & transient_local()
Set durability to TRANSIENT_LOCAL — late joiners get the last value.
Definition qos.hpp:270
constexpr QoS & lifespan(const Duration &d)
Definition qos.hpp:309
constexpr QoS & keep_last(int depth)
Definition qos.hpp:283
constexpr HistoryPolicy history() const
The history policy.
Definition qos.hpp:370
constexpr QoS & reliable()
Set reliability to RELIABLE (acked transport, retransmits on loss).
Definition qos.hpp:258
constexpr LivelinessPolicy liveliness() const
The liveliness policy kind.
Definition qos.hpp:372
constexpr DurabilityPolicy durability() const
The durability policy.
Definition qos.hpp:368
constexpr QoS & tx_express(bool on)
Definition qos.hpp:339
constexpr ReliabilityPolicy reliability() const
The reliability policy.
Definition qos.hpp:366
constexpr QoS & liveliness(LivelinessPolicy kind)
Definition qos.hpp:316
constexpr QoS & avoid_ros_namespace_conventions(bool on)
Definition qos.hpp:330
constexpr QoS & durability_volatile()
Set durability to VOLATILE — late joiners get nothing (default).
Definition qos.hpp:276
static constexpr QoS services()
Services profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:720
static constexpr QoS sensor_data()
Sensor-data profile: BEST_EFFORT + VOLATILE + KEEP_LAST(5).
Definition qos.hpp:717
constexpr QoS(::size_t depth)
Definition qos.hpp:253
constexpr bool avoid_ros_namespace_conventions() const
Whether to skip the /rt/ ROS topic-name prefix.
Definition qos.hpp:384
constexpr int depth() const
Configured queue depth (only meaningful for KEEP_LAST).
Definition qos.hpp:374
static constexpr QoS default_profile()
Default profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:714
constexpr RosoutQoS()
Definition qos.hpp:882
rmw_qos_profile_sensor_data — KEEP_LAST(5), BEST_EFFORT, VOLATILE. ADOPT.
Definition qos.hpp:838
constexpr SensorDataQoS()
Definition qos.hpp:840
constexpr ServicesQoS()
Definition qos.hpp:849
SystemDefaultsQoS()
Definition qos.hpp:901
static const bool value
Definition qos.hpp:800
constexpr Duration qos_window_duration(uint32_t ms)
Definition qos.hpp:211
constexpr QoS qos_from_ffi(const nros_cpp_qos_t &f)
Definition qos.hpp:693
constexpr uint32_t qos_window_ms(const Duration &d)
Definition qos.hpp:201
constexpr bool operator==(const QoS &left, const QoS &right)
Definition qos.hpp:446
const char * rclc_qos_policy_kind_to_cstr(uint32_t policy)
constexpr bool operator!=(const QoS &left, const QoS &right)
Definition qos.hpp:460
const char * qos_policy_kind_to_cstr(uint32_t policy)
Definition qos.hpp:510
constexpr QoS KeepAll()
rclcpp::KeepAll(). Same ADOPT-BOUNDED note as KeepLast.
Definition qos.hpp:921
ReliabilityPolicy
Definition qos.hpp:136
@ Unknown
The backend could not determine this policy. An ABSENCE.
LivelinessPolicy
Definition qos.hpp:172
HistoryPolicy
History policy. Matches DDS HISTORY_QOS_POLICY.
Definition qos.hpp:157
@ Unknown
The backend could not determine this policy. An ABSENCE.
DurabilityPolicy
Durability policy. Matches DDS DURABILITY_QOS_POLICY.
Definition qos.hpp:147
@ Unknown
The backend could not determine this policy. An ABSENCE.
nros_cpp_qos_history_t
Definition qos.hpp:68
@ NROS_CPP_QOS_HISTORY_UNKNOWN
Definition qos.hpp:72
@ NROS_CPP_QOS_KEEP_LAST
Definition qos.hpp:69
@ NROS_CPP_QOS_KEEP_ALL
Definition qos.hpp:70
@ NROS_CPP_QOS_HISTORY_SYSTEM_DEFAULT
Definition qos.hpp:71
nros_cpp_qos_liveliness_t
Definition qos.hpp:74
@ NROS_CPP_QOS_LIVELINESS_MANUAL_BY_NODE
Definition qos.hpp:78
@ NROS_CPP_QOS_LIVELINESS_AUTOMATIC
Definition qos.hpp:76
@ NROS_CPP_QOS_LIVELINESS_UNKNOWN
Definition qos.hpp:79
@ NROS_CPP_QOS_LIVELINESS_MANUAL_BY_TOPIC
Definition qos.hpp:77
@ NROS_CPP_QOS_LIVELINESS_NONE
Definition qos.hpp:75
nros_cpp_qos_durability_t
Definition qos.hpp:62
@ NROS_CPP_QOS_DURABILITY_UNKNOWN
Definition qos.hpp:66
@ NROS_CPP_QOS_VOLATILE
Definition qos.hpp:63
@ NROS_CPP_QOS_TRANSIENT_LOCAL
Definition qos.hpp:64
@ NROS_CPP_QOS_DURABILITY_SYSTEM_DEFAULT
Definition qos.hpp:65
nros_cpp_qos_reliability_t
Definition qos.hpp:56
@ NROS_CPP_QOS_RELIABLE
Definition qos.hpp:57
@ NROS_CPP_QOS_RELIABILITY_UNKNOWN
Definition qos.hpp:60
@ NROS_CPP_QOS_BEST_EFFORT
Definition qos.hpp:58
@ NROS_CPP_QOS_RELIABILITY_SYSTEM_DEFAULT
Definition qos.hpp:59
enum nros_cpp_qos_durability_t durability
Definition qos.hpp:83
uint32_t liveliness_lease_ms
Definition qos.hpp:89
uint32_t lifespan_ms
Definition qos.hpp:88
enum nros_cpp_qos_history_t history
Definition qos.hpp:84
uint8_t tx_express
Definition qos.hpp:91
enum nros_cpp_qos_liveliness_t liveliness_kind
Definition qos.hpp:85
enum nros_cpp_qos_reliability_t reliability
Definition qos.hpp:82
uint8_t avoid_ros_namespace_conventions
Definition qos.hpp:90
uint32_t deadline_ms
Definition qos.hpp:87
int depth
Definition qos.hpp:86
F type
Definition qos.hpp:781
F type
Definition qos.hpp:787
F type
Definition qos.hpp:784
F type
Definition qos.hpp:778