10#ifndef NROS_CPP_QOS_HPP
11#define NROS_CPP_QOS_HPP
20#include "nros/duration.hpp"
143 return d.nanoseconds() <= 0
145 : (d.nanoseconds() >
static_cast<int64_t
>(UINT32_MAX) * 1000000
147 :
static_cast<uint32_t
>((d.nanoseconds() + 999999) / 1000000));
153 return Duration::from_nanoseconds(
static_cast<int64_t
>(ms) * 1000000);
176 using Liveliness [[deprecated(
"QoS::Liveliness is deprecated; use nros::LivelinessPolicy")]] =
183 [[deprecated(
"QoS::LivelinessNone is deprecated; use "
187 "QoS::LivelinessAutomatic is deprecated; use "
190 [[deprecated(
"QoS::LivelinessManualByTopic is deprecated; use "
194 "QoS::LivelinessManualByNode is deprecated; use "
203 liveliness_lease_ms_(0), avoid_ros_namespace_conventions_(0), tx_express_(0) {}
286 avoid_ros_namespace_conventions_ = on ? 1 : 0;
295 tx_express_ = on ? 1 : 0;
302 [[deprecated(
"QoS::deadline_ms(uint32_t) is deprecated; use "
303 "QoS::deadline(nros::Duration)")]]
constexpr QoS&
310 [[deprecated(
"QoS::lifespan_ms(uint32_t) is deprecated; use "
311 "QoS::lifespan(nros::Duration)")]]
constexpr QoS&
318 [[deprecated(
"QoS::liveliness_lease_ms(uint32_t) is deprecated; use "
319 "QoS::liveliness_lease_duration(nros::Duration)")]]
constexpr QoS&
321 liveliness_lease_ms_ = ms;
347 constexpr int depth()
const {
return depth_; }
358 return avoid_ros_namespace_conventions_ != 0;
361 constexpr bool tx_express()
const {
return tx_express_ != 0; }
369 [[deprecated(
"QoS::reliability_raw() is deprecated; use QoS::reliability()")]]
constexpr int
371 return static_cast<int>(reliability_);
374 [[deprecated(
"QoS::durability_raw() is deprecated; use QoS::durability()")]]
constexpr int
376 return static_cast<int>(durability_);
379 [[deprecated(
"QoS::history_raw() is deprecated; use QoS::history()")]]
constexpr int
381 return static_cast<int>(history_);
384 [[deprecated(
"QoS::liveliness_raw() is deprecated; use QoS::liveliness()")]]
constexpr int
386 return static_cast<int>(liveliness_);
389 [[deprecated(
"QoS::deadline_ms() is deprecated; use QoS::deadline()")]]
constexpr uint32_t
394 [[deprecated(
"QoS::lifespan_ms() is deprecated; use QoS::lifespan()")]]
constexpr uint32_t
399 [[deprecated(
"QoS::liveliness_lease_ms() is deprecated; use "
400 "QoS::liveliness_lease_duration()")]]
constexpr uint32_t
402 return liveliness_lease_ms_;
414 uint32_t deadline_ms_;
415 uint32_t lifespan_ms_;
416 uint32_t liveliness_lease_ms_;
417 uint8_t avoid_ros_namespace_conventions_;
442 f.depth = qos.depth();
448 f.liveliness_lease_ms =
qos_window_ms(qos.liveliness_lease_duration());
449 f.avoid_ros_namespace_conventions = qos.avoid_ros_namespace_conventions() ? 1 : 0;
450 f.tx_express = qos.tx_express() ? 1 : 0;
constexpr int depth() const
Configured queue depth (only meaningful for KEEP_LAST).
Definition qos.hpp:347
constexpr QoS & best_effort()
Set reliability to BEST_EFFORT (fire-and-forget; default for sensors).
Definition qos.hpp:219
constexpr HistoryPolicy history() const
The history policy.
Definition qos.hpp:343
constexpr int history_raw() const
Definition qos.hpp:380
constexpr bool avoid_ros_namespace_conventions() const
Whether to skip the /rt/ ROS topic-name prefix.
Definition qos.hpp:357
constexpr Duration lifespan() const
The lifespan window. Duration() (zero) = infinite.
Definition qos.hpp:351
constexpr uint32_t lifespan_ms() const
Definition qos.hpp:395
constexpr QoS & deadline_ms(uint32_t ms)
Definition qos.hpp:304
constexpr QoS & liveliness_lease_duration(const Duration &d)
Definition qos.hpp:278
static constexpr QoS default_profile()
Default profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:328
static constexpr QoS services()
Services profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:334
constexpr ReliabilityPolicy reliability() const
The reliability policy.
Definition qos.hpp:339
constexpr QoS & avoid_ros_namespace_conventions(bool on)
Definition qos.hpp:285
constexpr Duration deadline() const
The deadline window. Duration() (zero) = infinite.
Definition qos.hpp:349
constexpr QoS & reliable()
Set reliability to RELIABLE (acked transport, retransmits on loss).
Definition qos.hpp:213
constexpr DurabilityPolicy durability() const
The durability policy.
Definition qos.hpp:341
static constexpr QoS sensor_data()
Sensor-data profile: BEST_EFFORT + VOLATILE + KEEP_LAST(5).
Definition qos.hpp:331
constexpr Duration liveliness_lease_duration() const
The liveliness lease window. Duration() (zero) = infinite.
Definition qos.hpp:353
constexpr QoS & tx_express(bool on)
Definition qos.hpp:294
static constexpr LivelinessPolicy LivelinessAutomatic
Definition qos.hpp:188
constexpr uint32_t deadline_ms() const
Definition qos.hpp:390
constexpr QoS()
Definition qos.hpp:200
constexpr LivelinessPolicy liveliness() const
The liveliness policy kind.
Definition qos.hpp:345
constexpr QoS & lifespan_ms(uint32_t ms)
Definition qos.hpp:312
constexpr int liveliness_raw() const
Definition qos.hpp:385
constexpr int reliability_raw() const
Definition qos.hpp:370
constexpr QoS & keep_last(int depth)
Definition qos.hpp:238
constexpr QoS & durability_volatile()
Set durability to VOLATILE — late joiners get nothing (default).
Definition qos.hpp:231
constexpr QoS & liveliness(LivelinessPolicy kind)
Definition qos.hpp:271
constexpr uint32_t liveliness_lease_ms() const
Definition qos.hpp:401
constexpr int durability_raw() const
Definition qos.hpp:375
constexpr QoS & keep_all()
Use KEEP_ALL history (bounded by transport).
Definition qos.hpp:245
static constexpr LivelinessPolicy LivelinessManualByNode
Definition qos.hpp:195
constexpr bool tx_express() const
Whether this publisher's samples bypass transport tx batching.
Definition qos.hpp:361
static constexpr LivelinessPolicy LivelinessNone
Definition qos.hpp:184
constexpr QoS & deadline(const Duration &d)
Definition qos.hpp:257
static constexpr LivelinessPolicy LivelinessManualByTopic
Definition qos.hpp:192
constexpr QoS & transient_local()
Set durability to TRANSIENT_LOCAL — late joiners get the last value.
Definition qos.hpp:225
constexpr QoS & liveliness_lease_ms(uint32_t ms)
Definition qos.hpp:320
constexpr QoS(int depth)
Definition qos.hpp:208
constexpr QoS & lifespan(const Duration &d)
Definition qos.hpp:264
constexpr uint32_t qos_window_ms(const Duration &d)
Definition qos.hpp:142
constexpr Duration qos_window_duration(uint32_t ms)
Definition qos.hpp:152
LivelinessPolicy
Definition qos.hpp:116
@ LivelinessManualByNode
Definition qos.hpp:120
@ LivelinessNone
Definition qos.hpp:117
@ LivelinessAutomatic
Definition qos.hpp:118
@ LivelinessManualByTopic
Definition qos.hpp:119
HistoryPolicy
History policy. Matches DDS HISTORY_QOS_POLICY.
Definition qos.hpp:103
@ KeepLast
Definition qos.hpp:104
@ KeepAll
Definition qos.hpp:105
ReliabilityPolicy
Reliability policy. Matches DDS RELIABILITY_QOS_POLICY.
Definition qos.hpp:91
@ BestEffort
Definition qos.hpp:93
@ Reliable
Definition qos.hpp:92
DurabilityPolicy
Durability policy. Matches DDS DURABILITY_QOS_POLICY.
Definition qos.hpp:97
@ TransientLocal
Definition qos.hpp:99
@ Volatile
Definition qos.hpp:98
nros_cpp_qos_history_t
Definition qos.hpp:44
@ NROS_CPP_QOS_KEEP_LAST
Definition qos.hpp:45
@ NROS_CPP_QOS_KEEP_ALL
Definition qos.hpp:46
nros_cpp_qos_liveliness_t
Definition qos.hpp:48
@ NROS_CPP_QOS_LIVELINESS_MANUAL_BY_NODE
Definition qos.hpp:52
@ NROS_CPP_QOS_LIVELINESS_AUTOMATIC
Definition qos.hpp:50
@ NROS_CPP_QOS_LIVELINESS_MANUAL_BY_TOPIC
Definition qos.hpp:51
@ NROS_CPP_QOS_LIVELINESS_NONE
Definition qos.hpp:49
nros_cpp_qos_durability_t
Definition qos.hpp:40
@ NROS_CPP_QOS_VOLATILE
Definition qos.hpp:41
@ NROS_CPP_QOS_TRANSIENT_LOCAL
Definition qos.hpp:42
nros_cpp_qos_reliability_t
Definition qos.hpp:36
@ NROS_CPP_QOS_RELIABLE
Definition qos.hpp:37
@ NROS_CPP_QOS_BEST_EFFORT
Definition qos.hpp:38
enum nros_cpp_qos_durability_t durability
Definition qos.hpp:56
uint32_t liveliness_lease_ms
Definition qos.hpp:62
uint32_t lifespan_ms
Definition qos.hpp:61
enum nros_cpp_qos_history_t history
Definition qos.hpp:57
uint8_t tx_express
Definition qos.hpp:64
enum nros_cpp_qos_liveliness_t liveliness_kind
Definition qos.hpp:58
enum nros_cpp_qos_reliability_t reliability
Definition qos.hpp:55
uint8_t avoid_ros_namespace_conventions
Definition qos.hpp:63
uint32_t deadline_ms
Definition qos.hpp:60
int depth
Definition qos.hpp:59