#[repr(C)]pub struct rmw_publisher_t {
pub topic_name: *const c_char,
pub type_name: *const c_char,
pub qos: rmw_qos_profile_t,
pub can_loan_messages: bool,
pub _reserved: [u8; 7],
pub backend_data: *mut c_void,
}Expand description
Publisher entity.
Created by vtable->create_publisher; destroyed by
vtable->destroy_publisher. The runtime owns the storage; the
runtime fills topic_name / type_name / qos before the
create call. The backend writes backend_data.
can_loan_messages matches upstream rmw_publisher_t’s field of
the same name — true means the backend exposes the
loan_publish / commit_publish primitive (Phase 99).
The runtime DERIVES it; a backend does not write it (issue 0814).
Its value is exactly vtable->borrow_loaned_message != NULL, because
that is the same fact, and a fact with two spellings drifts — this one
had drifted in both directions at once. Anything a backend writes here
is overwritten.
This paragraph used to read “the runtime reads it once at create time
and picks the publish path accordingly; no per-call probe”. That was
never true: nothing has ever branched on the field, and the publish
path is chosen per call from vtable->borrow_loaned_message itself.
To refuse a loan for a PARTICULAR entity, return
RMW_RET_UNSUPPORTED from borrow_loaned_message. The per-entity
answer belongs on the call, which the runtime consults; not on this
flag, which it does not.
Fields§
§topic_name: *const c_charTopic name (borrowed; outlives the publisher).
type_name: *const c_charROS-2-style fully-qualified type name
(e.g., "std_msgs/msg/Int32"). Borrowed; outlives the publisher.
qos: rmw_qos_profile_tQoS subset honoured by this publisher.
can_loan_messages: boolBackend exposes loan_publish / commit_publish (Phase 99).
DERIVED by the runtime from vtable->borrow_loaned_message;
a backend’s write is overwritten (issue 0814).
_reserved: [u8; 7]Reserved for future fields; must be zero.
backend_data: *mut c_voidOpaque backend state. NULL if creation failed.
Trait Implementations§
Source§impl Clone for rmw_publisher_t
impl Clone for rmw_publisher_t
Source§fn clone(&self) -> rmw_publisher_t
fn clone(&self) -> rmw_publisher_t
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more