Expand description
Crate zerodds-rpc. Safety classification: STANDARD.
DDS-RPC 1.0 (OMG formal/16-12-04) Request/Reply-Framework auf
dem ZeroDDS-DCPS-Stack.
§Schichten-Position
Layer 4 — Core Services. Baut auf zerodds-dcps (DataWriter/
DataReader) + zerodds-idl (IDL-AST) + zerodds-qos (DDS-QoS) +
zerodds-xml (Profile-Loader).
§Public API (Stand 1.0.0-rc.1)
Foundation (Spec §7.3-§7.5):
common_types—RequestHeader,ReplyHeader,SampleIdentity,RemoteExceptionCode_t(Spec §7.5.1.1.1) mit XCDR2-Encode/Decode.topic_naming— Topic-Naming-Konvention<Service>_Request/<Service>_Reply(Spec §7.8.2) plus Service-Name-Validation.annotations— Lowering der RPC-IDL-Annotations@service,@oneway,@in,@out,@inout(Spec §7.3).service_mapping— Datenmodell-Lowering einer IDL-Service- Definition zuServiceDef/MethodDef/ParamDef(Spec §7.4).codegen— Request/Reply-Struct-Pairs (Basic + Enhanced) +CallUnion(Spec §7.5.1).rpc_hash—rpc_member_hashfuer Spec-§7.5.4 Member-Hash.
Runtime (Spec §7.9-§7.11):
requester—Requester<TIn, TOut>: Request senden, Reply viaSampleIdentity-Korrelation, blocking + tick-driven API.replier—Replier<TIn, TOut>inkl.ReplierHandler-Trait +FnHandler-Adapter.qos_profile—RpcQosmit Spec-Defaults + XML-Profile- Resolution gegenzerodds-xml::DdsXml.wire_codec— Encoder/Decoder fuer Request- und Reply-Frames (Header XCDR2 + User-Payload).endpoint—RpcEndpointBuilderals Convenience-Konstruktor.
Cross-Cutting (Spec §7.6-§7.8):
discovery_ext—PublicationBuiltinTopicDataExt+ Service-Match-Logik.function_call—FunctionStub/FunctionSkeleton/dispatch_request(Spec §7.7).evolution_rules— Compatibility-Mappings (Spec §7.6.5).request_identity—RequestIdentity(Spec-Layer-Wrapper).
§Beispiel
ⓘ
use zerodds_rpc::{Requester, RpcEndpointBuilder};
// ... siehe README.md fuer ein vollstaendiges Quickstart-Beispiel.Re-exports§
pub use annotations::LoweredRpc;pub use annotations::RpcAnnotation;pub use annotations::lower_rpc_annotations;pub use codegen::CallUnionCase;pub use codegen::CallUnionDef;pub use codegen::MemberType;pub use codegen::MethodPair;pub use codegen::ReplyType;pub use codegen::RequestType;pub use codegen::ServiceLayout;pub use codegen::StructMember;pub use codegen::build_basic_pair;pub use codegen::build_enhanced_all;pub use codegen::build_enhanced_pair;pub use common_types::MAX_HEADER_BYTES;pub use common_types::MAX_STRING_LEN;pub use common_types::RemoteExceptionCode;pub use common_types::ReplyHeader;pub use common_types::RequestHeader;pub use common_types::SampleIdentity;pub use discovery_ext::PublicationBuiltinTopicDataExt;pub use discovery_ext::ServiceMappingProfile;pub use discovery_ext::SubscriptionBuiltinTopicDataExt;pub use discovery_ext::client_matches_service;pub use discovery_ext::service_matches_client;pub use endpoint::ReplierEndpoint;pub use endpoint::RequesterEndpoint;pub use endpoint::RpcEndpointBuilder;pub use error::RpcError;pub use error::RpcResult;pub use evolution_rules::Evolution;pub use evolution_rules::Mapping;pub use evolution_rules::compatible_evolutions;pub use evolution_rules::is_compatible;pub use function_call::FunctionSkeleton;pub use function_call::FunctionStub;pub use function_call::OperationDescriptor;pub use function_call::ServiceDescriptor;pub use function_call::dispatch_request;pub use request_identity::RequestIdentity;pub use rpc_hash::rpc_member_hash;pub use service_mapping::MethodDef;pub use service_mapping::ParamDef;pub use service_mapping::ParamDirection;pub use service_mapping::ServiceDef;pub use service_mapping::TypeRef;pub use service_mapping::lower_service;pub use topic_naming::REPLY_SUFFIX;pub use topic_naming::REQUEST_SUFFIX;pub use topic_naming::ServiceTopicNames;pub use topic_naming::reply_topic_name;pub use topic_naming::request_topic_name;pub use topic_naming::validate_service_name;
Modules§
- annotations
- DDS-RPC IDL-Annotations — Spec §7.3.
- codegen
- Request/Reply-Codegen-Datenmodell — Spec §7.5.1.
- common_
types - DDS-RPC Common-Types — Spec §7.5.1.1.1.
- discovery_
ext - RPC-Discovery-Extensions (Spec §7.6.2.x).
- endpoint
- RPC-Endpoint-Helper — Spec §7.6.2.
- error
- Fehler-Typen fuer das DDS-RPC-Crate (C6.1.A).
- evolution_
rules - Service-Evolution-Compatibility-Regeln (Spec §7.7).
- function_
call - Function-Call-Style Service-API (Spec §7.2.2.1, §7.9.2.1, §7.10.1).
- qos_
profile RpcQos— QoS-Profile-Resolution fuer DDS-RPC (Spec §7.11).- replier
Replier— Server-Seite eines DDS-RPC-Service (Spec §7.10).- request_
identity - Request-Identity-Propagation (Spec §7.8.2.x).
- requester
Requester— Client-Seite eines DDS-RPC-Service (Spec §7.9).- rpc_
hash - RPC-spezifischer Hashing-Algorithm (Spec §7.5.1.1.2).
- service_
mapping - Service-IDL → typisiertes Service-Datenmodell — Spec §7.4.
- topic_
naming - DDS-RPC Topic-Naming-Konvention — Spec §7.8.2.
- wire_
codec - Wire-Codec fuer Request- und Reply-Samples (Foundation C6.1.C).