#[repr(u8)]pub enum QoSLivelinessPolicy {
None = 0,
Automatic = 1,
ManualByNode = 2,
ManualByTopic = 3,
Unknown = 4,
}Expand description
QoS liveliness policy. Matches DDS LIVELINESS semantics.
Variants§
None = 0
Discriminant 0 — the same value the C ABI spells
NROS_RMW_LIVELINESS_SYSTEM_DEFAULT and upstream spells
RMW_QOS_POLICY_LIVELINESS_SYSTEM_DEFAULT.
phase-428 W10 — the NAME diverges from both and the VALUE does not, so
this is what an upstream-mirroring profile carries. Read it as “the
middleware’s choice”, not as “liveliness is off”: a backend that sees 0
omits the DDS call entirely and inherits the DDS default, which is
AUTOMATIC. None is our spelling, kept because it is the C ABI
discriminant three enums already agree on; renaming it is a separate
question from getting the value right, and only the value crosses.
No liveliness assertion or tracking of our own.
Automatic = 1
Backend’s keepalive task asserts liveliness automatically.
ManualByNode = 2
Application calls assert_liveliness() at the node level.
Phase 376 W5/B2 — this was 3 and ManualByTopic was 2, the opposite of
upstream. The discriminant IS the C ABI value (liveliness_kind is
written with as u8), and the cyclonedds backend turns it into a real
DDS liveliness kind that a ROS peer matches on, so the swap was visible
on the wire and nowhere else.
ManualByTopic = 3
Application calls assert_liveliness() per topic explicitly.
Unknown = 4
The backend could not determine this policy. Discriminant 4, the
value the C ABI spells NROS_RMW_LIVELINESS_UNKNOWN.
An ABSENCE, not a value — see QoSProfile::QOS_PROFILE_UNKNOWN. A
*_get_actual_qos read-back writes it for a policy it cannot report;
an application never requests it.
Implementations§
Source§impl QoSLivelinessPolicy
impl QoSLivelinessPolicy
Sourcepub const fn is_manual(self) -> bool
pub const fn is_manual(self) -> bool
true for the two kinds under which the APPLICATION owns the
assertion — ManualByNode and
ManualByTopic.
The ONE spelling of that test (the phase-467 RMW gap-closure design
study’s Row 7). It decides what Publisher::assert_liveliness owes:
under a manual kind the caller asked for something a backend either
performs or cannot, so a backend that cannot must answer
Unsupported; under Automatic / None there is nothing to assert
and Ok(()) is the whole truth. Unknown is an absence, never a
request, so it is not manual.
Trait Implementations§
Source§impl Clone for QoSLivelinessPolicy
impl Clone for QoSLivelinessPolicy
Source§fn clone(&self) -> QoSLivelinessPolicy
fn clone(&self) -> QoSLivelinessPolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more