zerodds-rpc
Request/Reply-Framework auf dem ZeroDDS-DCPS-Stack
nach OMG DDS-RPC 1.0 (formal/16-12-04). Pure-Rust + alloc.
Safety classification: STANDARD.
Spec-Mapping
| Spec | Abschnitt |
|---|---|
| OMG DDS-RPC 1.0 | §7.3 (IDL-Annotations), §7.4 (Service-Mapping), §7.5 (Common-Types + Member-Hash), §7.6 (Evolution-Rules), §7.7 (function_call/dispatch), §7.8 (Topic-Naming + Request-Identity + Discovery-Ext), §7.9 (Requester), §7.10 (Replier), §7.11 (QoS-Profile) |
Vollabdeckung der Spec laut docs/spec-coverage/dds-rpc-1.0.md.
Was ist drin
Foundation:
RequestHeader,ReplyHeader,SampleIdentity,RemoteExceptionCode(XCDR2-encoded).topic_naming::{request_topic_name, reply_topic_name, validate_service_name, REQUEST_SUFFIX, REPLY_SUFFIX, ServiceTopicNames}.annotations::{LoweredRpc, RpcAnnotation, lower_rpc_annotations}— IDL@service/@oneway/@in/@out/@inout-Lowering.service_mapping::{ServiceDef, MethodDef, ParamDef, ParamDirection, TypeRef, lower_service}.codegen::{ServiceLayout, RequestType, ReplyType, MethodPair, CallUnionDef, CallUnionCase, MemberType, StructMember, build_basic_pair, build_enhanced_pair, build_enhanced_all}.rpc_hash::rpc_member_hash— Spec §7.5.4 Member-Hash.
Runtime:
Requester<TIn, TOut>— synchroner Client mitsend_request_blocking+ tick-drivensend_request_async.Replier<TIn, TOut>+ReplierHandler-Trait +FnHandler-Adapter.RpcEndpointBuilder,RequesterEndpoint,ReplierEndpoint.RpcQos::{default_basic, default_enhanced, from_xml_profile}— Spec §7.11 Foundation/Enhanced + XML-Profile-Resolution.wire_codec::{encode_request_frame, decode_request_frame, encode_reply_frame, decode_reply_frame}.
Cross-Cutting:
discovery_ext::{PublicationBuiltinTopicDataExt, SubscriptionBuiltinTopicDataExt, ServiceMappingProfile, client_matches_service, service_matches_client}— Spec §7.8.4.function_call::{FunctionStub, FunctionSkeleton, OperationDescriptor, ServiceDescriptor, dispatch_request}— Spec §7.7.evolution_rules::{Evolution, Mapping, compatible_evolutions, is_compatible}— Spec §7.6.5.request_identity::RequestIdentity— Spec §7.8.2.
Errors: RpcError / RpcResult.
Schichten-Position
Layer 4 — Core Services. Konsumiert zerodds-dcps (Writer/Reader/QoS), zerodds-idl (IDL-AST), zerodds-qos (DDS-QoS-Policies), zerodds-rtps (Inline-QoS-PIDs), zerodds-types (DdsType-Trait), zerodds-xml (Profile-Loader).
Quickstart
use ;
use DomainParticipant;
let participant = new?;
let qos = default_basic;
// Replier: Service-Implementation
let replier = new?;
// Requester: Client
let requester = new?;
let reply = requester.send_request_blocking?;
assert_eq!;
Feature-Flags
| Feature | Default | Zweck |
|---|---|---|
std |
✅ | Threading + Mutex/mpsc fuer Requester/Replier. |
alloc |
✅ via std | Vec/String. |
safety |
❌ | Reserve-Hook fuer extra Defensive-Checks. |
Foundation-Layer-Module bauen auch in no_std + alloc. Runtime-Module (requester, replier, qos_profile, endpoint) brauchen std.
Stabilitaet
1.0.0-rc.1 materialisiert die Spec-Abdeckung von OMG DDS-RPC 1.0
vollstaendig. Public-API + Wire-Format sind RC1-stabil.
Tests
180 Tests gruen (171 lib + 5 + 4 integration).
Lizenz
Apache-2.0. Siehe LICENSE.
Siehe auch
docs/spec-coverage/dds-rpc-1.0.md— Spec-Coverage-Doc.zerodds-dcps— DCPS-Runtime.zerodds-idl— IDL-AST-Parser.zerodds-xml— DDS-XML-Profile-Loader.