zerodds_corba_poa/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! OMG CORBA 3.3 Part 1 §11 — Portable Object Adapter (POA).
5//!
6//! Crate `zerodds-corba-poa`. Safety classification: **STANDARD**.
7//! `no_std + alloc`, `forbid(unsafe_code)`.
8//!
9//! Voller POA-Stack mit allen 7 Policies in allen Modi, POAManager-
10//! State-Machine, POA-Hierarchie, Active-Object-Map, ServantManager-
11//! Hooks und Policy-Compatibility-Validator.
12//!
13//! ## Public API (Stand 1.0.0-rc.1)
14//!
15//! - [`Poa`] / [`PoaConfig`] — POA-Instanz mit Hierarchie.
16//! - [`PoaManager`] / [`PoaManagerState`] — State-Machine
17//! (`Holding` / `Active` / `Discarding` / `Inactive`).
18//! - [`PolicySet`] + die 7 `*Policy`-Enums (Spec §11.3.7).
19//! - [`Servant`] — Servant-Trait mit `primary_interface` /
20//! `primary_repository_id` (typisiert via `corba-ir`) /
21//! `all_interfaces` / `is_a` / `invoke`.
22//! - [`ActiveObjectMap`] / [`ServantId`].
23//! - [`ServantActivator`] / [`ServantLocator`] (Spec §11.3.5.7-§11.3.5.8).
24//! - [`ObjectId`] (Spec §11.2.1).
25//! - [`PoaError`] / [`PoaResult`].
26//!
27//! ## Beispiel
28//!
29//! ```
30//! use zerodds_corba_poa::policies::PolicySet;
31//! let policies = PolicySet::default();
32//! assert!(policies.validate().is_ok());
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
42pub mod active_object_map;
43pub mod error;
44pub mod object_id;
45pub mod poa;
46pub mod poa_manager;
47pub mod policies;
48pub mod servant;
49pub mod servant_manager;
50
51pub use active_object_map::{ActiveObjectMap, ServantId};
52pub use error::{PoaError, PoaResult};
53pub use object_id::ObjectId;
54pub use poa::{Poa, PoaConfig};
55pub use poa_manager::{PoaManager, PoaManagerState};
56pub use policies::{
57 IdAssignmentPolicy, IdUniquenessPolicy, ImplicitActivationPolicy, LifespanPolicy, PolicySet,
58 RequestProcessingPolicy, ServantRetentionPolicy, ThreadPolicy,
59};
60pub use servant::Servant;
61pub use servant_manager::{ServantActivator, ServantLocator, ServantLocatorCookie};