Skip to main content

zerodds_corba_dds_bridge/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! CORBA-Object ↔ DDS-Topic Bridge.
5//!
6//! Crate `zerodds-corba-dds-bridge`. Safety classification: **STANDARD**.
7//!
8//! # Scope
9//!
10//! Brueckt CORBA-Object-Method-Invocations bidirektional auf DDS-
11//! Topic-Publish/Subscribe:
12//!
13//! * **CORBA → DDS**: Eine GIOP-Request, die der Bridge-POA empfaengt,
14//!   wird in ein DDS-Sample umgewandelt und auf dem assoziierten
15//!   Topic publiziert. Der Reply kommt aus einem zweiten Reply-Topic.
16//! * **DDS → CORBA**: Ein DDS-Sample auf einem Source-Topic wird in
17//!   eine GIOP-Request konvertiert und an einen CORBA-Client-Endpoint
18//!   gesendet (Forwarding-Modus).
19//!
20//! Der `BridgeMapping` erlaubt eine Many-to-Many-Konfiguration: ein
21//! CORBA-Object kann mehrere Topics bedienen, ein DDS-Topic kann
22//! Requests von mehreren CORBA-Objects akzeptieren.
23//!
24//! Konkrete Wire-Anbindung an die CORBA-Welt liegt in [`wire`]:
25//! [`decode_giop_request_bytes`] und [`object_key_from_ior`] kapseln
26//! die Cross-Crate-Aufrufe an `corba-giop` bzw. `corba-ior`.
27//!
28//! ## Beispiel
29//!
30//! ```
31//! use zerodds_corba_dds_bridge::Direction;
32//! assert_ne!(Direction::CorbaToDds, Direction::DdsToCorba);
33//! ```
34
35#![cfg_attr(not(feature = "std"), no_std)]
36#![forbid(unsafe_code)]
37#![warn(missing_docs)]
38
39#[cfg(feature = "alloc")]
40extern crate alloc;
41
42// Bridge-Security-Adapter (Bridge-Spec §7.1 TLS via rustls/SSLIOP,
43// §7.2 Auth-Modes, §7.3 Topic-ACL). std-only.
44#[cfg(feature = "std")]
45pub mod bridge_security;
46// Daemon-Runtime-Adapter + QoS-Translation. std-only.
47pub mod csiv2_wire;
48#[cfg(feature = "std")]
49pub mod daemon_runtime;
50pub mod locate;
51pub mod mapping;
52pub mod notify;
53#[cfg(feature = "std")]
54pub mod qos_translation;
55pub mod servant;
56pub mod sync;
57pub mod wire;
58
59pub use mapping::{BridgeMapping, BridgeRoute, Direction, OperationMapping, TopicQosRef};
60pub use servant::BridgeServant;
61pub use sync::{LifecycleEvent, LifecycleSync};
62pub use wire::{RequestSummary, decode_giop_request_bytes, object_key_from_ior};