Expand description
C6.1.D-cpp: DDS-RPC C++ PSM-Codegen.
Spec-Referenz: OMG DDS-RPC 1.0 (formal/16-12-04), §10 — C++ PSM.
Diese Schicht emittiert pro zerodds_rpc::ServiceDef vier Bausteine:
- Service-Interface — abstrakte Klasse
<Service>mit pro-Methode sync +_async-Signaturen plus<Service>HandlerInterfacefuer die Server-Seite. - Requester-Klasse — typisierter
<Service>_Requester-Wrapper, der vom Generic [dds::rpc::Requester<TIn, TOut>]-Template erbt und pro Methode eineFuture<TOut> name_async(TIn)plusTOut name(TIn)-API exportiert. - Replier-Klasse — typisierter
<Service>_Replier-Wrapper mitdispatch_to_handler, der einen [<Service>HandlerInterface] an Methoden-Dispatch bindet. - ServiceTraits —
dds::rpc::ServiceTraits<<Service>>-Spezialisierung mit Topic-Names + Mapping-Variante.
Die generischen Templates liegen unter
templates/dds-psm-cxx/rpc/{requester,replier,exception,service_traits}.hpp.tmpl
und werden via include_str! eingebettet.
§Spec §10 Coverage
| §10-Item | Coverage |
|---|---|
§10.2 dds::rpc-Namespace | done — alle generierten Klassen liegen unter dds::rpc::*. |
| §10.3 ServiceTraits | done — pro Service spezialisiert. |
| §10.4 Requester-Template | done — Generic + typisierter Per-Service-Wrapper. |
| §10.5 Replier-Template | done — Generic + typisierter Per-Service-Wrapper + HandlerInterface. |
| §10.5 Operation-Naming | done — <Service>_<method>_In/Out direkt aus C6.1.B. |
| §10.6 RemoteException | done — Hierarchie + Mapping pro IDL-Exception via emit_remote_exception_class. |
| §10.7 Promise/Future | done — dds::rpc::Future<T> + Promise<T> als std::future-Wrapper. |
| §10.7 Async-API | done — <method>_async liefert Future<TOut>. |
§Bewusst nicht im Crate
- Live-FFI-Anbindung an die Rust-RPC-Runtime — nur Quelltext.
- Promise/Future-Optimierung (Skeleton ohne Listener-Style-API).
attribute T name-Mapping (§7.5.1.1.3) — keine Attribute-Slots im aktuellenzerodds_rpc::ServiceDef.g++/clang++-Compile-Test — nicht Teil der CI.
Functions§
- emit_
remote_ exception_ class - Emittiert eine konkrete RemoteException-Subklasse aus einer IDL-
exception E { ... }-Deklaration (Spec §10.6). - emit_
replier_ class - Emittiert die typisierte Replier-Klasse fuer einen Service.
- emit_
requester_ class - Emittiert die typisierte Requester-Klasse fuer einen Service.
- emit_
rpc_ runtime_ headers - Emittiert die generischen RPC-Header-Templates (Requester/Replier/ Exception/ServiceTraits) als zusammengefuegten Header-Block.
- emit_
service_ full_ header - Emittiert einen vollstaendigen RPC-Service-Header (Interface + Requester + Replier + ServiceTraits) fuer einen einzelnen Service.
- emit_
service_ interface - Emittiert das Service-Interface (abstrakte Klasse + HandlerInterface).
- emit_
service_ traits - Emittiert die
ServiceTraits<<Service>>-Spezialisierung (Spec §10.3).