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.awith 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