1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 ZeroDDS Contributors
//! Crate `zerodds-zenoh-bridge`. Safety classification: **STANDARD**.
//!
//! ZeroDDS ↔ Eclipse-Zenoh Bridge — `no_std + alloc` (pure-Rust
//! Mapping-Layer ohne `zenoh`-Dep) plus Feature-gated `zenoh-runtime`
//! fuer den voll-funktionalen Live-Bridge-Pfad.
//!
//! Verbindet einen ZeroDDS-DomainParticipant mit einer Zenoh-Session,
//! sodass DDS-Topics auf Zenoh-Key-Expressions gemappt werden und in
//! beide Richtungen gepumpt werden.
//!
//! # Architektur
//!
//! ```text
//! DDS-Topic ────────► ZeroDDS DataReader
//! │ │
//! │ ▼ on_data
//! │ Bridge::forward
//! │ │
//! │ ▼ zenoh::publisher::put
//! │ Zenoh KeyExpr
//! │ │
//! │ ◄────────────────────┤ Zenoh Subscriber
//! │ │
//! │ Bridge::reverse
//! │ │
//! │ ▼ DataWriter::write
//! ▼
//! DDS-Topic
//! ```
//!
//! # Feature-Gating
//!
//! - **default** — Skeleton-Crate ohne `zenoh`-Dep. Topic-Mapping-
//! Logik + Tests laufen pure-Rust, sodass das Workspace-CI ohne
//! externe Dependencies bleibt.
//! - **zenoh-runtime** — bringt `zenoh = "1"` + `tokio`. Damit ist
//! `ZenohBridge::start` voll funktional.
//!
//! # QoS-Mapping (DDS → Zenoh)
//!
//! | DDS-QoS | Zenoh-Aequivalent |
//! |---------|-------------------|
//! | `Reliability::Reliable` | `Reliability::Reliable` (Zenoh) |
//! | `Reliability::BestEffort` | `Reliability::BestEffort` |
//! | `Durability::TransientLocal` | `CongestionControl::Block` + `Priority::DataHigh` |
//! | `Durability::Volatile` (Default) | `CongestionControl::Drop` |
//! | `History::KeepLast(n)` | (Zenoh hat kein History-Cache; n>1 ignoriert) |
//! | `Partition` | KeyExpr-Praefix (`<partition>/<topic>`) |
//!
//! # Spec-Referenz
//!
//! Es gibt keine OMG-Spec fuer Zenoh-Bridges. Diese Crate folgt dem
//! De-facto-Pattern von ZettaScale's `zenoh-bridge-dds` (siehe
//! <https://github.com/eclipse-zenoh/zenoh-plugin-dds>), aber als
//! eigenstaendige Rust-Library statt Plugin.
extern crate alloc;
pub use ;
pub use ;