zerodds-rpc
Layer 4 — Core Services. Request/reply framework on the ZeroDDS DCPS stack per OMG DDS-RPC 1.0.
- Source: crates/rpc
- API docs: docs.rs/zerodds-rpc
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 itemdoneorn/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.
- Quelle: crates/rpc
- API-Docs: docs.rs/zerodds-rpc
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 Itemdoneodern/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.