Skip to main content

EntityMetadata

Struct EntityMetadata 

Source
pub struct EntityMetadata {
Show 32 fields pub slot: Option<EntitySlot>, pub id: MetadataString, pub node_slot: Option<NodeSlot>, pub node_id: MetadataString, pub kind: EntityKind, pub source_name: MetadataString, pub source_name_kind: SourceNameKind, pub type_name: &'static str, pub type_hash: &'static str, pub action_hashes: Option<ActionEndpointHashes<'static>>, pub qos: QoSProfile, pub callback_slot: Option<CallbackSlot>, pub callback_id: Option<MetadataString>, pub callback_source: SourceLocationMetadata, pub callback_group: Option<MetadataString>, pub action_cancel_callback_slot: Option<CallbackSlot>, pub action_cancel_callback_id: Option<MetadataString>, pub action_cancel_source: SourceLocationMetadata, pub action_accepted_callback_slot: Option<CallbackSlot>, pub action_accepted_callback_id: Option<MetadataString>, pub action_accepted_source: SourceLocationMetadata, pub period_ms: Option<u64>, pub period_us: Option<u64>, pub timer_clock: TimerClockSource, pub timer_kind: TimerKind, pub parameter_type: Option<ParameterType>, pub parameter_default: Option<ParameterDefault>, pub parameter_read_only: bool, pub safety: bool, pub in_place_capable: Option<bool>, pub buffered_row: Option<BufferedRow>, pub source: SourceLocationMetadata,
}
Expand description

Recorded entity declaration.

Fields§

§slot: Option<EntitySlot>§id: MetadataString§node_slot: Option<NodeSlot>§node_id: MetadataString§kind: EntityKind§source_name: MetadataString§source_name_kind: SourceNameKind§type_name: &'static str§type_hash: &'static str§action_hashes: Option<ActionEndpointHashes<'static>>

Issue 1913 — the hash each endpoint of an ACTION entity is keyed on (None for every other kind). Set by the typed declarations in node.rs, which know A; the runtime replays it into the raw spec. Not emitted in the metadata JSON.

§qos: QoSProfile§callback_slot: Option<CallbackSlot>§callback_id: Option<MetadataString>§callback_source: SourceLocationMetadata§callback_group: Option<MetadataString>§action_cancel_callback_slot: Option<CallbackSlot>§action_cancel_callback_id: Option<MetadataString>§action_cancel_source: SourceLocationMetadata§action_accepted_callback_slot: Option<CallbackSlot>§action_accepted_callback_id: Option<MetadataString>§action_accepted_source: SourceLocationMetadata§period_ms: Option<u64>§period_us: Option<u64>

Issue #505 — the timer period at the executor’s own resolution. period_ms is kept (and still emitted) for consumers of the metadata JSON, but it truncates: a declared 33.333 ms timer used to reach the runtime as 33 ms, a 1% permanent rate error, and a sub-millisecond period reached it as zero.

§timer_clock: TimerClockSource

Which clock advances this timer (phase-430 W4). Steady — the default and every timer declared before W4 — is the WALL case: the runtime registers it exactly as it always did. Ros makes the timer follow /clock, so a nros::main! component can own a simulated-time timer without reaching for the executor.

Meaningless for every other entity kind, and deliberately NOT emitted in the metadata JSON: the runtime reads this struct directly from the component’s declare(), so the sidecar schema does not have to move for the capability to work.

§timer_kind: TimerKind

phase-463 W1 – the ABI entry the timer came through (see TimerKind). Emitted as kind on the timer row; Wall for every other entity kind.

§parameter_type: Option<ParameterType>§parameter_default: Option<ParameterDefault>§parameter_read_only: bool§safety: bool

Phase 250 (Wave 2b) — a subscription that opted into E2E message-integrity validation (.safety()): the runtime registers it via create_generic_subscription_with_integrity and surfaces IntegrityStatus through CallbackCtx::integrity(). Ungated (a plain flag) — only the runtime branch that reads it is gated on safety-e2e, so when the capability is off the flag is simply ignored (the subscription registers as a basic one). false for every other entity.

§in_place_capable: Option<bool>

phase-457 W3 — can THIS subscription’s registration dispatch out of the backend’s own receive slot?

The CALL SITE’s half of a subscription’s registration_path (RFC-0100 D1, issues 1319 / 1340), reported by nros_node::executor::registration_observer from Executor::open_subscription — the one site in the tree that reads it. Not conjoined with the backend’s own answer: a probe links the RECORDING backend, so the conjunction would describe the probe rather than the image, and the consumer knows the shipped backend from the image’s rmw name.

None is “nobody observed this” and is a REFUSAL at every consumer, never a false. It is the state of every row on a road whose probe declares without registering — the Rust producer runs register() against a recording NodeContext and opens no executor — and of every non-subscription row, which claims no receive slot at all.

§buffered_row: Option<BufferedRow>

Issue 1648 – the BUFFERED row the registration claimed. Set by the same observation as Self::in_place_capable, so the two are present together or not at all; None is “nobody observed this”.

§source: SourceLocationMetadata

Implementations§

Source§

impl EntityMetadata

Source

pub fn declared_subscription_shape(&self) -> DeclaredSubscriptionShape

phase-457 W5 (issue 1522) — which registration entry point this DECLARED subscription will reach.

THE classifier, in the sense DeclaredSubscriptionShape’s module docs give it: the declarative registrar (node_runtime’s EntityKind::Subscription arm) dispatches on this answer, and the metadata recorder states in_place_capable from the same answer. Two readers of one function is not a second opinion; two functions would be, which is the drift phase-457 W3 removed from the CLI.

The safety-e2e mask lives HERE and nowhere else. With the capability off the runtime ignores safety and registers the basic path (see that field’s doc), so a probe built the same way must say the same thing — and a second #[cfg] at either reader is the disagreement this function exists to prevent.

Meaningful only for EntityKind::Subscription; no other kind reaches a subscription entry point, and no caller asks.

Trait Implementations§

Source§

impl Clone for EntityMetadata

Source§

fn clone(&self) -> EntityMetadata

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 Debug for EntityMetadata

Source§

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

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

impl Eq for EntityMetadata

Source§

impl PartialEq for EntityMetadata

Source§

fn eq(&self, other: &EntityMetadata) -> 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 EntityMetadata

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.