Skip to main content

Crate zerodds_rpc

Crate zerodds_rpc 

Source
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_typesRequestHeader, 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 zu ServiceDef/MethodDef/ParamDef (Spec §7.4).
  • codegen — Request/Reply-Struct-Pairs (Basic + Enhanced) + CallUnion (Spec §7.5.1).
  • rpc_hashrpc_member_hash fuer Spec-§7.5.4 Member-Hash.

Runtime (Spec §7.9-§7.11):

  • requesterRequester<TIn, TOut>: Request senden, Reply via SampleIdentity-Korrelation, blocking + tick-driven API.
  • replierReplier<TIn, TOut> inkl. ReplierHandler-Trait + FnHandler-Adapter.
  • qos_profileRpcQos mit Spec-Defaults + XML-Profile- Resolution gegen zerodds-xml::DdsXml.
  • wire_codec — Encoder/Decoder fuer Request- und Reply-Frames (Header XCDR2 + User-Payload).
  • endpointRpcEndpointBuilder als Convenience-Konstruktor.

Cross-Cutting (Spec §7.6-§7.8):

§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).