Skip to main content

nros_std_msgs/msg/
empty.rs

1// nros message type - pure Rust, no_std compatible
2// Package: std_msgs
3// Message: Empty
4
5use nros_core::{Deserialize, RosMessage, Serialize};
6use nros_serdes::{CdrReader, CdrWriter, DeserError, SerError};
7
8/// Empty message type
9#[derive(Debug, Clone, Default, PartialEq)]
10pub struct Empty {}
11
12impl Serialize for Empty {
13    // Empty message — rosidl's one padding member, inside the XCDR2 DHEADER
14    // (a no-op under XCDR1).
15    fn serialize(&self, writer: &mut CdrWriter) -> Result<(), SerError> {
16        let __dh = writer.begin_dheader()?;
17        // Issue 1293 — rosidl's `structure_needs_at_least_one_member`: every
18        // stock typesupport writes it and refuses a payload without it.
19        writer.write_u8(0)?;
20        writer.end_dheader(__dh)?;
21        Ok(())
22    }
23}
24
25impl Deserialize for Empty {
26    // Empty message — the padding member, inside the XCDR2 DHEADER.
27    fn deserialize(reader: &mut CdrReader) -> Result<Self, DeserError> {
28        let __dh = reader.begin_dheader()?;
29        // Issue 1293 — the padding byte every stock peer sends.
30        let _ = reader.read_u8()?;
31        reader.end_dheader(__dh)?;
32        Ok(Self {})
33    }
34}
35
36impl RosMessage for Empty {
37    const TYPE_NAME: &'static str = "std_msgs::msg::dds_::Empty_";
38    const TYPE_HASH: &'static str = "TypeHashNotSupported";
39    // Issue 1179 -- the type's bound on `RosMessage`, the one trait every
40    // backend's registration can read. Computed from the schema below, not
41    // copied, so it cannot drift from it.
42    const MAX_SERIALIZED_BOUND: Option<usize> = ::nros_serdes::size::max_serialized_bound::<Self>();
43}
44
45// ── nros_serdes::Message — runtime field schema ─────────────────────────────
46// Consumed by RMW backends that build wire-type descriptors at runtime
47// (Cyclone DDS dynamic types, …) without per-RMW codegen at compile time.
48
49impl ::nros_serdes::Message for Empty {
50    const TYPE_NAME: &'static str = "std_msgs/msg/Empty";
51    const FIELDS: &'static [::nros_serdes::Field] = &[::nros_serdes::Field {
52        name: ::nros_serdes::schema::EMPTY_STRUCT_MEMBER,
53        ty: ::nros_serdes::FieldType::Uint8,
54        offset: 0,
55    }];
56}