zerodds-dcps-async
Runtime-agnostische async-Wrappers um die zerodds-dcps Sync-API. Newtypes teilen den internen Arc<...> mit den Sync-Pendants — kein State-Duplikat, kein Performance-Overhead. Safety classification: STANDARD.
Spec-Mapping
| Spec | Abschnitt |
|---|---|
| ZeroDDS-async 1.0 | §1–§9 (komplett) |
| OMG DDS 1.4 | §2.2.2.4–5 (DataWriter/DataReader-API) |
Was ist drin
- Async-Newtypes —
AsyncDomainParticipantFactory,AsyncDomainParticipant,AsyncPublisher,AsyncDataWriter<T>,AsyncSubscriber,AsyncDataReader<T>. Jeder Newtype haelt einenArc<...>auf das Sync-Pendant. write().await— yield-basierte Retry-Schleife aufOutOfResources-Backpressure (Spec §5.1).Condvar::wait_timeout-Sync-Block durchyield_for-Future ersetzt; Caller-Tasks bleiben cancelable.take(timeout).await— Polling-Future mit Deadline; leererVec<T>bei Timeout (analog Sync-Semantik).SampleStream(Spec §2.2.1) —Stream<Item = T>. Live-Mode nutztregister_user_reader_wakeran der Runtime; Wake erfolgt beimsample_tx.send(kein Polling). Offline-Mode: detached-Thread-Sleep als Polling-Fallback (Spec §3.3).DataAvailableStream(Spec §6.1) —Stream<Item = ()>. Signalisiert "neue Daten verfuegbar" pro Sample-Zufluss; konsumiert keine Samples (Caller rufttake()separat).PublicationMatchedStream(Spec §6.2) —Stream<Item = SubscriptionMatchedStatus>. Emittiert den vollen Reader-side Match-Status (DDS 1.4 §2.2.4.1 SUBSCRIPTION_MATCHED) bei jeder Aenderung.wait_for_matched_*-Futures — Async-Polling-Schleifen mit Deadline.
Schichten-Position
Layer 4 — Core Services. Aufgesetzt auf zerodds-dcps (Layer 4) und zerodds-qos (Layer 1). Runtime-agnostisch — nutzt futures-core::Stream, optional tokio::time::sleep mit Feature tokio-glue. Default-Pfad ist Detached-Thread-Sleep.
Quickstart
use ;
use RawBytes;
async
Feature-Flags
| Feature | Default | Zweck |
|---|---|---|
std |
✅ | Standard-Library + Threads + Detached-Thread-Sleep. |
tokio-glue |
❌ | tokio::time::sleep als Backend fuer yield_for (statt detached-Thread). Reduziert Spawn-Overhead bei tokio-basiertem Caller. |
Stabilitaet
Alle pub-Items sind ab 1.0.0 stabil; Breaking-Changes erfordern Major-Bump.
Tests
Lizenz
Apache-2.0. Siehe LICENSE.
Siehe auch
zerodds-dcps— die zugrundeliegende Sync-APIdocs/specs/zerodds-async-1.0.md— async-API-Spec