Expand description
DDS-XRCE Wire-Codec (OMG formal/2020-11-01).
Crate zerodds-xrce. Safety classification: SAFE.
Siehe docs/architecture/02_architecture.md §3 und
docs/architecture/04_safety_by_architecture.md §2.
§Scope (C6.2.A — Wire-Lite + UDP-Mapping)
MessageHeader(§8.3.2): SessionId/StreamId/SequenceNr + optionalem ClientKey.SubmessageHeader(§8.3.4): SubmessageId, Flags, Length.- 16 Submessages (§8.3.5): CREATE_CLIENT, CREATE, GET_INFO, DELETE, STATUS_AGENT, STATUS, INFO, WRITE_DATA, READ_DATA, DATA, ACKNACK, HEARTBEAT, RESET, FRAGMENT, TIMESTAMP, TIMESTAMP_REPLY.
SerialNumber16: RFC-1982-Comparator (§8.3.2.3).XrceUdpSender/recv_message(§11.2): UDP-Transport- Mapping mit Default-Port-Schema7400 + 4 * domainId + offset.
§Scope (C6.2.B — Object-Model + Reliable-Stack)
ObjectId/ObjectKind/ObjectVariant(§7.2 + §7.7).ObjectStore(§7.5): pro-ClientBTreeMap<ObjectId, Instance>mit CREATE-Reuse/Replace-Semantik.ReliableStreamState(§8.4.10/§8.4.11): Sender + Receiver mit HEARTBEAT-Tick und ACKNACK-Bitmap.FragmentAssembler(§8.4.13) mit DoS-Caps + GC.ReadStream(§8.4.14): Continuous-Read mit Rate-Limiter.TransportLocator(§7.7.4): Small/Medium/Large/String.MulticastDiscovery(§11.2.4) auf239.255.0.2:7400.
§Scope (C6.2.C — XML/File-Configuration)
XrceConfig(§7.7.3 + §9.3): Object-Hierarchy-Loader fuer<dds><participant>...</participant></dds>mit Type/QoS-Profile- Reuse viazerodds-xml(DDS-XML-Loader).to_create_messages: generiert die CREATE-Submessage-Sequence in topologischer Reihenfolge (Type → Participant → Topic → Pub/Sub → DataWriter/DataReader) mitRepresentationByXmlString-Body.
§Scope (C6.2.D — TCP/Serial-Transports + TLS/DTLS)
transport_tcp(§11.3):XrceTcpClient/XrceTcpServermit 2-Byte-Length-Prefix-Framing.transport_serial(Annex C): HDLC-aehnlicher Frame-Codec mit Byte-Stuffing + CRC-16-CCITT-FALSE; Streaming-Reassembly viaSerialFramer. Echte Serial-IO ist nicht im Scope (keinserialport-Crate-Dep).transport_tls: Trait + Skeleton fuer TLS-on-TCP (Plug-In spaeter).transport_dtls:DtlsLayer-Trait +DummyDtls-Pass-Through; echte DTLS-Lib (z.B.webrtc-dtls) kommt deployment-spezifisch.TransportLocatorTcp+TransportLocatorSerialals zusaetzliche Locator-Varianten (Discriminator 0x04/0x05).
§Bewusst nicht implementiert
- Echte Serialport-IO (kein
serialport-Crate-Dep). - Echte TLS-/DTLS-Engine (Plug-In spaeter).
- ROS2-Bridge.
- Live-Reload / Hot-Swap der XML-Config (Stretch).
Re-exports§
pub use error::XrceError;pub use header::CLIENT_KEY_LEN;pub use header::ClientKey;pub use header::MessageHeader;pub use header::SESSION_ID_NONE_WITH_CLIENT_KEY;pub use header::SESSION_ID_NONE_WITHOUT_CLIENT_KEY;pub use header::SessionId;pub use header::StreamId;pub use serial_number::SerialNumber16;pub use submessages::DOSC_MAX_PAYLOAD_SIZE;pub use submessages::DOSC_MAX_SUBMESSAGES;pub use submessages::FLAG_E_LITTLE_ENDIAN;pub use submessages::Message;pub use submessages::Submessage;pub use submessages::SubmessageHeader;pub use submessages::SubmessageId;pub use transport_udp::XrceUdpSender;pub use transport_udp::agent_default_port;pub use transport_udp::client_default_port;pub use transport_udp::recv_message;pub use transport_udp::send_message;pub use continuous_read::DeliveryControl;pub use continuous_read::PendingSample;pub use continuous_read::ReadStream;pub use discovery::MulticastDiscovery;pub use discovery::XRCE_DISCOVERY_GROUP;pub use discovery::XRCE_DISCOVERY_PORT;pub use fragment::AssemblerKey;pub use fragment::FragmentAssembler;pub use fragment::MAX_FRAGMENTS_PER_STREAM;pub use fragment::MAX_PENDING_STREAMS;pub use fragment::MAX_TOTAL_PAYLOAD;pub use object_id::KIND_MASK_BIT;pub use object_id::OBJECTID_AGENT;pub use object_id::OBJECTID_CLIENT;pub use object_id::OBJECTID_INVALID;pub use object_id::ObjectId;pub use object_kind::OBJK_AGENT;pub use object_kind::OBJK_APPLICATION;pub use object_kind::OBJK_CLIENT;pub use object_kind::OBJK_DATAREADER;pub use object_kind::OBJK_DATAWRITER;pub use object_kind::OBJK_DOMAIN;pub use object_kind::OBJK_INVALID;pub use object_kind::OBJK_PARTICIPANT;pub use object_kind::OBJK_PUBLISHER;pub use object_kind::OBJK_QOSPROFILE;pub use object_kind::OBJK_SUBSCRIBER;pub use object_kind::OBJK_TOPIC;pub use object_kind::OBJK_TYPE;pub use object_kind::ObjectKind;pub use object_repr::ObjectVariant;pub use object_repr::REPR_MAX_INLINE_BYTES;pub use object_store::CreateOutcome;pub use object_store::CreationMode;pub use object_store::ObjectInstance;pub use object_store::ObjectStore;pub use reliable::DEFAULT_HEARTBEAT_PERIOD;pub use reliable::RECEIVER_BUFFER_CAP;pub use reliable::RELIABLE_MAX_PAYLOAD;pub use reliable::ReliableConfig;pub use reliable::ReliableStreamState;pub use reliable::SENDER_WINDOW_CAP;pub use transport_dtls::DtlsError;pub use transport_dtls::DtlsLayer;pub use transport_dtls::DummyDtls;pub use transport_locator::TRANSPORT_LOCATOR_SERIAL_DEVICE_MAX;pub use transport_locator::TRANSPORT_LOCATOR_STRING_MAX;pub use transport_locator::TransportLocator;pub use transport_locator::TransportLocatorLarge;pub use transport_locator::TransportLocatorMedium;pub use transport_locator::TransportLocatorSerial;pub use transport_locator::TransportLocatorSmall;pub use transport_locator::TransportLocatorTcp;pub use transport_serial::ESCAPE_BYTE;pub use transport_serial::FLAG_BYTE;pub use transport_serial::STUFF_XOR;pub use transport_serial::SerialError;pub use transport_serial::SerialFramer;pub use transport_serial::crc16_ccitt_false;pub use transport_serial::decode_frame as serial_decode_frame;pub use transport_serial::decode_frame_inner as serial_decode_frame_inner;pub use transport_serial::encode_message as serial_encode_message;pub use transport_serial::encode_payload as serial_encode_payload;pub use transport_tcp::TCP_LENGTH_PREFIX_SIZE;pub use transport_tcp::XrceTcpClient;pub use transport_tcp::XrceTcpServer;pub use transport_tls::XrceTlsClient;pub use transport_tls::XrceTlsServer;pub use transport_tls::XrceTlsStream;pub use xml_config::load_xrce_config_from_file;pub use xml_config::CreateMessage;pub use xml_config::DataReaderConfig;pub use xml_config::DataWriterConfig;pub use xml_config::InMemoryQosResolver;pub use xml_config::MAX_HIERARCHY_DEPTH;pub use xml_config::MAX_TYPES_PER_FILE;pub use xml_config::ParticipantConfig;pub use xml_config::PublisherConfig;pub use xml_config::QosProfileResolver;pub use xml_config::SubscriberConfig;pub use xml_config::TopicConfig;pub use xml_config::TypeConfig;pub use xml_config::XrceConfig;pub use xml_config::XrceXmlError;pub use xml_config::load_xrce_config;
Modules§
- continuous_
read - Continuous-Read-Mode (Spec §8.4.14).
- discovery
- XRCE Multicast-Discovery (Spec §11.2.4).
- encoding
- Endianness-Helpers fuer XRCE-Submessage-Bodies.
- error
- XRCE-Wire-Format-Fehler.
- fragment
- XRCE FRAGMENT-Reassembler (Spec §8.4.13).
- header
- XRCE Message-Header (Spec §8.3.2).
- object_
id ObjectId(Spec §7.2.1).- object_
info - XRCE Object-Repr-Typen aus Spec §7.7.7 - §7.7.13.
- object_
kind - XRCE-Object-Kinds (Spec §7.2 Table 4).
- object_
repr ObjectVariant-Representations (Spec §7.7).- object_
store ObjectStore— pro-Client Object-Lifecycle (Spec §7.5).- reliable
- XRCE Reliable-Stream-State-Machine (Spec §8.4.10/§8.4.11).
- serial_
number - RFC-1982 Serial Number Arithmetic fuer XRCE-Sequence-Numbers (Spec §8.3.2.3).
- submessages
- XRCE-Submessage-Wire-Format (Spec §8.3.4 + §8.3.5).
- transport_
dtls - XRCE DTLS-Wrapper fuer UDP (Spec §11.5).
- transport_
locator TransportLocator-Wire-Encoding (Spec §7.7.4).- transport_
serial - XRCE Serial-Transport-Framer (Spec Annex C, RFC 1662 PPP/HDLC-Framing).
- transport_
tcp - XRCE TCP-Transport-Mapping (Spec §11.3).
- transport_
tls - XRCE TLS-Wrapper fuer TCP (Spec §11.3 + §11.4).
- transport_
udp - XRCE UDP-Transport-Mapping (Spec §11.2).
- xml_
config - XRCE-XML-File-Configuration (Spec §7.7.3 + §9.3).