Skip to main content

zerodds_corba_ccm_lib/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! `zerodds-corba-ccm-lib` — Production-Ready CCM-Components.
5//!
6//! Crate `zerodds-corba-ccm-lib`. Safety classification: **STANDARD**.
7//! Spec: OMG CCM 4.0 (`formal/2006-04-01`) §6 + §10 (Persistent State).
8//!
9//! Enthaelt drei produktionsreife CCM-Components, die als Schablone
10//! oder direkt in Plans verwendet werden koennen:
11//!
12//! * [`dds_bridge`] — `DdsBridgeComponent`: bidirektionale CCM↔DDS-
13//!   Bruecke, mappt CCM-EventSinks auf DDS-Topics und DDS-Reader auf
14//!   CCM-EventSources.
15//! * [`persistence`] — `PersistenceStorageComponent`: Persistent
16//!   State Service §10 (`/storage`).
17//! * [`telemetry`] — `TelemetryComponent`: emittiert Component-
18//!   Lifecycle-Metriken via DCPS-Topic `__ZeroDDS_CcmTelemetry`.
19//!
20//! ## Beispiel
21//!
22//! ```
23//! use zerodds_corba_ccm_lib::{MappingDirection, TopicMapping};
24//! let m = TopicMapping {
25//!     port_name: "in".into(),
26//!     topic_name: "Sensor".into(),
27//!     type_name: "sensors::Tick".into(),
28//!     direction: MappingDirection::SinkSubscribesTopic,
29//! };
30//! assert_eq!(m.direction, MappingDirection::SinkSubscribesTopic);
31//! ```
32
33#![no_std]
34#![forbid(unsafe_code)]
35#![warn(missing_docs)]
36
37extern crate alloc;
38
39#[cfg(feature = "std")]
40extern crate std;
41
42pub mod dds_bridge;
43pub mod persistence;
44pub mod telemetry;
45
46pub use dds_bridge::{BridgeError, DdsBridgeComponent, MappingDirection, TopicMapping};
47pub use persistence::{PersistenceError, PersistenceStorageComponent, StorageEntry};
48pub use telemetry::{TelemetryComponent, TelemetryEvent, TelemetryKind};