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};