Expand description
Crate zerodds-cdr. Safety classification: SAFE.
XCDR1/XCDR2 encoder/decoder + KeyHash + PL_CDR1 member codec for
@mutable structured data — fully implements the OMG XTypes 1.3 §7.4
wire format.
§Spec
- OMG XTypes 1.3 §7.4 (Wire-Encoding) inkl. §7.4.1.2 (PL_CDR1), §7.4.2 (Plain CDR2 / Delimited CDR2 / PL_CDR2), §7.4.4 (Composite Types: String/Sequence/Array/Optional), §7.4.5 (Struct-Extensibility: final/appendable/mutable).
- OMG XTypes 1.3 §7.6.8 KeyHash (CDR_BE Key-Holder + MD5-Fallback).
- DDSI-RTPS 2.5 §10 Wire-Encapsulation (RepresentationIdentifier).
§Layer position
Layer 1 — primitives. Direct dependents: zerodds-types, zerodds-qos,
zerodds-rtps, zerodds-discovery, zerodds-dcps, zerodds-idl-rust,
dds-corba-{ior,iiop,giop,csiv2,cosnaming,rust}, zerodds-ts-wasm.
§Public API (as of 1.0.0-rc.1)
BufferReader/BufferWriter— alignment-tracking byte-level I/O primitives.Endianness— little/big-endian marker.CdrEncode/CdrDecode— trait family for serializable types; implementations for all spec primitives plus composite types (String,Vec<T>,[T; N],Option<T>) in thecompositemodule.EncodeError/DecodeError— typed errors with offset information.fixed::Fixed— IDLfixed<P,S>decimal type with BCD encoding.struct_enc— XCDR2 extensibility encoder (encode_final,encode_appendable,struct_enc::MutableStructEncoder+read_mutable_member).xcdr1— XTypes-1.3-conformant PL_CDR1 member codec (encode_pl_cdr1_member,read_pl_cdr1_member,read_all_pl_cdr1_members,write_pl_cdr1_sentinel).key_hash::compute_key_hash/PlainCdr2BeKeyHolder/KEY_HASH_LEN— XTypes 1.3 §7.6.8 KeyHash with MD5 fallback.
§Example
use zerodds_cdr::{BufferWriter, BufferReader, Endianness, CdrEncode, CdrDecode};
let mut w = BufferWriter::new(Endianness::Little);
42u32.encode(&mut w).unwrap();
let bytes = w.into_bytes();
let mut r = BufferReader::new(&bytes, Endianness::Little);
assert_eq!(u32::decode(&mut r).unwrap(), 42);Re-exports§
pub use endianness::Endianness;pub use error::DecodeError;pub use error::EncodeError;pub use key_hash::KEY_HASH_LEN;pub use key_hash::PlainCdr2BeKeyHolder;pub use key_hash::compute_key_hash;pub use buffer::BufferReader;pub use buffer::BufferWriter;pub use encode::CdrDecode;pub use encode::CdrEncode;pub use composite::WString;pub use composite::AnyValue;pub use composite::CorbaAny;pub use type_code::TypeCode;
Modules§
- buffer
- Alignment-tracking buffer reader/writer for XCDR.
- composite
- Composite-type encoder/decoder (W2).
- encode
CdrEncode/CdrDecodetraits + primitive implementations (W1.3).- endianness
- Endianness configuration for XCDR streams (XCDR2 §7.4.1).
- error
- Encoder and decoder errors.
- fixed
- IDL
fixed<P, S>decimal type (XCDR2 §7.4.4.5). - key_
hash - KeyHash computation for DDS topics (XTypes 1.3 §7.6.8 + DDSI-RTPS 2.5 §9.6.4.8).
- struct_
enc - Struct encoding with extensibility (W3, XCDR2 §7.4.3, §7.4.5).
- type_
code - CORBA
TypeCode+ its CDR wire form (§15.3.5) — the self-describing part of anany. ATypeCodeis aTCKind(unsigned long) plus parameters: - xcdr1
- XCDR1 / PL_CDR1 — Plain CDR Version 1 with a parameter list for
@mutablestructs (XTypes 1.3 §7.4.2 / §7.4.1.2).