pub struct RawBytes {
pub data: Vec<u8>,
}Expand description
An opaque raw byte payload with a configurable type name (via an
impl of BytesPayload<T> or a newtype).
Fields§
§data: Vec<u8>Payload bytes (placed on the wire as-is, no CDR framing).
Implementations§
Trait Implementations§
Source§impl DdsType for RawBytes
impl DdsType for RawBytes
Source§const TYPE_NAME: &'static str = "zerodds::RawBytes"
const TYPE_NAME: &'static str = "zerodds::RawBytes"
Fully-qualified topic type name (e.g.
"std_msgs::String").
Must match the peer type name exactly (strict matching).Source§fn encode(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
fn encode(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
Serializes
self into the XCDR2 payload sent as the
serialized_payload of a DATA submessage. Default endianness:
little-endian (RTPS 2.5 §10.5
RepresentationIdentifier = CDR2_LE = 0x0010). Read moreSource§fn decode(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode(bytes: &[u8]) -> Result<Self, DecodeError>
Deserializes a little-endian XCDR2 payload. The caller ensures that
bytes contains the full sample payload (encapsulation header already
stripped). Read moreSource§const EXTENSIBILITY: Extensibility = Extensibility::Final
const EXTENSIBILITY: Extensibility = Extensibility::Final
XTypes 1.3 §7.4.5 struct extensibility kind. Default
Final
for backwards compat with pre-EXTENSIBILITY codegen outputs.
Spec: zerodds-xcdr2-rust §2.3.Source§const HAS_KEY: bool = false
const HAS_KEY: bool = false
true if the topic type is keyed (at least one member with
a @key annotation). Default false — the caller (proc-macro)
overrides this for keyed types and also implements
Self::encode_key_holder_be. Read moreSource§const KEY_HOLDER_MAX_SIZE: Option<usize> = None
const KEY_HOLDER_MAX_SIZE: Option<usize> = None
Maximum size of the PLAIN_CDR2-BE KeyHolder stream in bytes
(XTypes 1.3 §7.6.8.4 step 5).
None = not keyed or unbounded
(MD5 path). Some(n) with n <= 16 = zero-pad path.Source§const IS_NESTED: bool = false
const IS_NESTED: bool = false
true if the type is annotated with @nested (XTypes 1.3
§7.4.6.3.5). Nested types are only intended as members of other
types and MUST NOT be registered as a DDS topic type.
DomainParticipant::create_topic rejects registration of
nested types with PreconditionNotMet.Source§const TYPE_IDENTIFIER: TypeIdentifier = zerodds_types::TypeIdentifier::None
const TYPE_IDENTIFIER: TypeIdentifier = zerodds_types::TypeIdentifier::None
XTypes 1.3 §7.3.4.2 — TypeIdentifier of the type for
XTypes-aware discovery + compatibility matching. Default
TypeIdentifier::None signals “type-id not provided;
reader-writer matching falls back to plain type_name
comparison (DDS 1.4 §2.2.3 default path)”. Read moreSource§fn encode_be(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
fn encode_be(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
Big-endian variant of
Self::encode. The default
implementation delegates to Self::encode (no byte swap),
since a generic BE re-encode is not possible without type
reflection. Codegen overrides this for structures that should
genuinely go on the wire as BE. Spec: zerodds-xcdr2-rust §2.4. Read moreSource§fn decode_be(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode_be(bytes: &[u8]) -> Result<Self, DecodeError>
Big-endian variant of
Self::decode — for a payload whose
encapsulation header declared a big-endian representation identifier
(CDR_BE = 0x0000, PL_CDR_BE = 0x0002, CDR2_BE = 0x0006,
D_CDR2_BE = 0x0008, PL_CDR2_BE = 0x000a). The default implementation
delegates to Self::decode (little-endian) so pre-decode_be codegen
keeps working on the canonical wire; idl-rust codegen overrides this to
build a big-endian reader. Symmetric to Self::encode_be. Spec:
zerodds-xcdr2-rust §2.4; RTPS 2.5 §10.5. Read moreSource§fn encode_xcdr1(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
fn encode_xcdr1(&self, out: &mut Vec<u8>) -> Result<(), EncodeError>
Serializes as classic CDR / XCDR1 little-endian (representation
CDR_LE = 0x0001, max-alignment 8, no DHEADER on @final/@appendable,
PL_CDR1 for @mutable). This is the encoding Cyclone DDS carries in an
iceoryx PSMX chunk for a serialized sample, so the iceoryx-cyclone
bridge uses it for cross-vendor same-host interop. The default delegates
to Self::encode (XCDR2) — correct only for types whose XCDR1 and
XCDR2 byte streams coincide (no 8-byte members, @final, no @mutable);
idl-rust codegen overrides it with a true XCDR1 writer. Read moreSource§fn decode_xcdr1(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode_xcdr1(bytes: &[u8]) -> Result<Self, DecodeError>
Deserializes a classic-CDR / XCDR1 little-endian payload. Symmetric to
Self::encode_xcdr1; the default delegates to Self::decode and
idl-rust codegen overrides it with an XCDR1 reader. Read moreSource§fn decode_xcdr1_be(bytes: &[u8]) -> Result<Self, DecodeError>
fn decode_xcdr1_be(bytes: &[u8]) -> Result<Self, DecodeError>
Deserializes a classic-CDR / XCDR1 big-endian payload (encapsulation
CDR_BE = 0x0000 / PL_CDR_BE = 0x0002). The default delegates to
Self::decode_xcdr1 (little-endian) — correct for byte-order-agnostic
types and the common case (Cyclone/FastDDS/RTI emit XCDR1 little-endian);
idl-rust codegen overrides it with a true big-endian XCDR1 reader.
Symmetric to Self::decode_be for XCDR2. Read moreSource§fn encode_key_holder_be(&self, _holder: &mut PlainCdr2BeKeyHolder)
fn encode_key_holder_be(&self, _holder: &mut PlainCdr2BeKeyHolder)
Serializes the
@key member values in PLAIN_CDR2-BE format
into the given PlainCdr2BeKeyHolder. Order: ascending by
member_id (XTypes 1.3 §7.6.8.3.1.b). Read moreSource§fn field_value(&self, _path: &str) -> Option<Value>
fn field_value(&self, _path: &str) -> Option<Value>
Returns the value of a field path (dotted, e.g.
"a.b") as a
zerodds_sql_filter::Value for SQL filter evaluation in
QueryCondition / ContentFilteredTopic. Default: None (no field
reachable — the filter then denies every sample that contains a
field access). Read moreimpl Eq for RawBytes
impl StructuralPartialEq for RawBytes
Auto Trait Implementations§
impl Freeze for RawBytes
impl RefUnwindSafe for RawBytes
impl Send for RawBytes
impl Sync for RawBytes
impl Unpin for RawBytes
impl UnsafeUnpin for RawBytes
impl UnwindSafe for RawBytes
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more