Skip to main content

Module rpc

Module rpc 

Source
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>HandlerInterface fuer die Server-Seite.
  • Requester-Klasse — typisierter <Service>_Requester-Wrapper, der vom Generic [dds::rpc::Requester<TIn, TOut>]-Template erbt und pro Methode eine Future<TOut> name_async(TIn) plus TOut name(TIn)-API exportiert.
  • Replier-Klasse — typisierter <Service>_Replier-Wrapper mit dispatch_to_handler, der einen [<Service>HandlerInterface] an Methoden-Dispatch bindet.
  • ServiceTraitsdds::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-ItemCoverage
§10.2 dds::rpc-Namespacedone — alle generierten Klassen liegen unter dds::rpc::*.
§10.3 ServiceTraitsdone — pro Service spezialisiert.
§10.4 Requester-Templatedone — Generic + typisierter Per-Service-Wrapper.
§10.5 Replier-Templatedone — Generic + typisierter Per-Service-Wrapper + HandlerInterface.
§10.5 Operation-Namingdone — <Service>_<method>_In/Out direkt aus C6.1.B.
§10.6 RemoteExceptiondone — Hierarchie + Mapping pro IDL-Exception via emit_remote_exception_class.
§10.7 Promise/Futuredone — dds::rpc::Future<T> + Promise<T> als std::future-Wrapper.
§10.7 Async-APIdone — <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 aktuellen zerodds_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).