Skip to main content

Crate zerodds_cdr

Crate zerodds_cdr 

Source
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)

§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 / CdrDecode traits + 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 an any. A TypeCode is a TCKind (unsigned long) plus parameters:
xcdr1
XCDR1 / PL_CDR1 — Plain CDR Version 1 with a parameter list for @mutable structs (XTypes 1.3 §7.4.2 / §7.4.1.2).