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: TimerClockSourceWhich 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: TimerKindphase-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: boolPhase 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: SourceLocationMetadataImplementations§
Source§impl EntityMetadata
impl EntityMetadata
Sourcepub fn declared_subscription_shape(&self) -> DeclaredSubscriptionShape
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
impl Clone for EntityMetadata
Source§fn clone(&self) -> EntityMetadata
fn clone(&self) -> EntityMetadata
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more