Skip to main content

QoSLivelinessPolicy

Enum QoSLivelinessPolicy 

Source
#[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

Source

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

Source§

fn clone(&self) -> QoSLivelinessPolicy

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for QoSLivelinessPolicy

Source§

impl Debug for QoSLivelinessPolicy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for QoSLivelinessPolicy

Source§

fn default() -> QoSLivelinessPolicy

Returns the “default value” for a type. Read more
Source§

impl Eq for QoSLivelinessPolicy

Source§

impl PartialEq for QoSLivelinessPolicy

Source§

fn eq(&self, other: &QoSLivelinessPolicy) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for QoSLivelinessPolicy

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.