zerodds-rpc

Layer 4 — Core Services. Request/reply framework on the ZeroDDS DCPS stack per OMG DDS-RPC 1.0.

Spec anchors

  • OMG DDS-RPC 1.0 (formal/16-12-04) §7.3-§7.11.
  • Coverage: docs/spec-coverage/dds-rpc-1.0.md (every item done or n/a (informative)).

Source: crates/rpc →

Layer position

Layer 4. Consumes zerodds-dcps + zerodds-ast + zerodds-ast-core + zerodds-qos + zerodds-rtps + zerodds-types + zerodds-xml.

Quickstart

use std::sync::Arc;

use zerodds_dcps::factory::DomainParticipantFactory;
use zerodds_dcps::qos::DomainParticipantQos;
use zerodds_rpc::qos_profile::RpcQos;
use zerodds_rpc::replier::{FnHandler, Replier};
use zerodds_rpc::requester::Requester;

let participant = DomainParticipantFactory::instance()
    .create_participant(0, DomainParticipantQos::default())?;
let qos = RpcQos::default_basic();

// The handler is stored as `Arc<dyn ReplierHandler<_, _>>`, and it returns
// `Result<TOut, RemoteExceptionCode>` — DDS-RPC 1.0 §7.5.1.2.4.
let replier = Replier::<MyRequest, MyReply>::new(
    &participant, "Calculator", &qos,
    Arc::new(FnHandler::new(|req: MyRequest| Ok(MyReply { sum: req.a + req.b }))),
)?;

let requester = Requester::<MyRequest, MyReply>::new(&participant, "Calculator", &qos)?;
let reply = requester.send_request_blocking(&MyRequest { a: 1, b: 2 })?;

Feature flags

Feature Default Purpose
std ✅ Threading + Mutex/mpsc for the runtime.
alloc ✅ Foundation modules (no_std-capable).
safety ❌ Reserve hook.

Stability

1.0.0-rc.7.

Runnable example

zerodds-rpc

Layer 4 — Core Services. Request/Reply-Framework auf dem ZeroDDS-DCPS-Stack nach OMG DDS-RPC 1.0.

Spec-Anker

  • OMG DDS-RPC 1.0 (formal/16-12-04) §7.3-§7.11.
  • Coverage: docs/spec-coverage/dds-rpc-1.0.md (jedes Item done oder n/a (informative)).

Quelle: crates/rpc →

Schichten-Position

Layer 4. Konsumiert zerodds-dcps + zerodds-ast + zerodds-ast-core + zerodds-qos + zerodds-rtps + zerodds-types + zerodds-xml.

Quickstart

use std::sync::Arc;

use zerodds_dcps::factory::DomainParticipantFactory;
use zerodds_dcps::qos::DomainParticipantQos;
use zerodds_rpc::qos_profile::RpcQos;
use zerodds_rpc::replier::{FnHandler, Replier};
use zerodds_rpc::requester::Requester;

let participant = DomainParticipantFactory::instance()
    .create_participant(0, DomainParticipantQos::default())?;
let qos = RpcQos::default_basic();

// The handler is stored as `Arc<dyn ReplierHandler<_, _>>`, and it returns
// `Result<TOut, RemoteExceptionCode>` — DDS-RPC 1.0 §7.5.1.2.4.
let replier = Replier::<MyRequest, MyReply>::new(
    &participant, "Calculator", &qos,
    Arc::new(FnHandler::new(|req: MyRequest| Ok(MyReply { sum: req.a + req.b }))),
)?;

let requester = Requester::<MyRequest, MyReply>::new(&participant, "Calculator", &qos)?;
let reply = requester.send_request_blocking(&MyRequest { a: 1, b: 2 })?;

Feature-Flags

Feature Default Zweck
std ✅ Threading + Mutex/mpsc für Runtime.
alloc ✅ Foundation-Module (no_std-fähig).
safety ❌ Reserve-Hook.

Stabilität

1.0.0-rc.7.

Lauffähiges Beispiel