Architecture

AstuteDDS is organized into layered, independently testable components that combine into a single static library:

Layer Responsibility
RTPS Core DDSI-RTPS 2.5 wire protocol — discovery, reliability, transport (UDP / TCP / shared memory)
DCPS API OMG DDS 1.4 application API — DomainParticipant, Topic, Publisher, Subscriber, DataWriter, DataReader
X-Types DDS-XTypes 1.3 type system — TypeObject, assignability, DynamicData, TypeLookup Service
CDR/XCDR XCDR1 and XCDR2 serialisation codecs with DHEADER and EMHEADER support
Security SPI DDS Security 1.1/1.2 plugin interfaces — authentication, access control, AES-GCM crypto
IDL Compiler IDL 4.2 → C++ code generator, astutedds-idl command-line tool

Design Principles

  • Layered — clear separation between the wire protocol, the DCPS API, and the type system; each layer can be tested independently
  • Static library — a single libastutedds.a with no runtime shared-library dependencies, suitable for embedded and locked-down deployments
  • Modern C++20 — concepts, std::span, std::endian, and designated initialisers throughout; zero undefined behaviour
  • Thread-safe API — all public API calls are safe to call from multiple threads concurrently