Expand description
Request/Reply-Codegen-Datenmodell — Spec §7.5.1.
Diese Stufe (C6.1.B) leitet aus einer ServiceDef die Wire-Datenmodelle
der Request- und Reply-Topics ab. Die Spec unterscheidet zwei Layouts:
-
Basic-Service (Spec §7.5.1.1): ein Request-Topic + ein Reply- Topic pro Service-Type, beide mit einer ungetypten Discriminated-Union ueber alle Methoden. Wire-Form:
struct <Service>_Request { RequestHeader header; union <Service>_Call switch (long _d) { case OP_<m1>: <Service>_<m1>_In m1_args; case OP_<m2>: <Service>_<m2>_In m2_args; ... }; };<Service>_Replyanalog mit<Service>_<m>_OutundReplyHeader. -
Enhanced-Service (Spec §7.5.1.2): pro Methode ein eigenes Request- und Reply-Topic mit typisierten Pro-Methode-Strukturen. Wire-Form (pro Methode):
struct <Service>_<m>_In { /* in/inout-Params */ }; struct <Service>_<m>_Out { /* return + out/inout */ };
Wir erzeugen hier Daten-Strukturen (RequestType, ReplyType)
mit Member-Listen — kein Sprach-Codegen. Die Sprach-Backends in
crates/idl-cpp, idl-csharp und idl-java konsumieren das Modell
und emittieren Bindings.
Oneway-Methoden:
- Im Basic-Layout taucht eine Oneway-Methode im Request-Union auf, wird aber nicht ins Reply-Union aufgenommen — der Reply-Topic wird trotzdem gemeinsam genutzt.
- Im Enhanced-Layout liefert
build_enhanced_pairfuer eine Oneway-MethodeSome(RequestType)undNoneals Reply (sieheMethodPair).
Structs§
- Call
Union Case - Discriminator-Case einer Call-Union (Basic-Layout).
- Call
Union Def <Service>_Call(Request) bzw.<Service>_Result(Reply) Union.- Method
Pair - Pair fuer eine Enhanced-Methode. Reply ist
Nonebeioneway. - Reply
Type - Reply-Wire-Datenmodell. Analog zu
RequestType. - Request
Type - Request-Wire-Datenmodell.
- Struct
Member - Member einer generierten Wire-Struktur.
Enums§
- Member
Type - Typ eines Struct-Members. Entweder ein bekannter RPC-Header-Typ
(
RequestHeader/ReplyHeader/<Service>_Call) oder ein IDL-Typ auszerodds_idl::ast::TypeSpec. - Service
Layout - Layout-Variante des Service-Wire-Modells (Spec §7.5.1).
Functions§
- build_
basic_ pair - Liefert die Datenmodelle der Basic-Layout-Topics
(
<Service>_Requestplus<Service>_Reply). Ein leererServiceDefliefert ein Pair mit leeren Unions — der Caller muss selbst entscheiden, ob er das verwirft. - build_
enhanced_ all - Liefert alle Enhanced-Layout-Pairs eines Service.
- build_
enhanced_ pair - Liefert das Pro-Methode-Pair (Request + optional Reply).