Skip to main content

zerodds_corba_ior/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! OMG CORBA 3.3 Part 2 §13.6 — Interoperable Object Reference (IOR).
5//!
6//! Crate `zerodds-corba-ior`. Safety classification: **STANDARD**.
7//! Spec OMG CORBA 3.3 Part 2 §13.6.
8//!
9//! # Scope
10//!
11//! Voller IOR-Stack:
12//!
13//! * **IOR-Struct** (Spec §13.6.2): `string type_id` +
14//!   `sequence<TaggedProfile> profiles`.
15//! * **TaggedProfile** mit allen Standard-Profile-Tags (Spec §13.6.7.1)
16//!   plus IIOP-Profile-Body via `crates/corba-iiop/`.
17//! * **TaggedComponent** mit ueber 30 Standard-Component-Tags (Spec
18//!   §13.6.7.3) und strukturierten Decodern fuer die wichtigsten:
19//!   ORB_TYPE / CODE_SETS / ALTERNATE_IIOP_ADDRESS / SSL_SEC_TRANS /
20//!   TLS_SEC_TRANS / RMI_CUSTOM_MAX_STREAM_FORMAT / JAVA_CODEBASE.
21//! * **stringified-IOR** (Spec §13.6.10): `IOR:`-Prefix + Hex-
22//!   Encoding einer CDR-Encapsulation. Bidirektional encode/decode.
23//! * **corbaloc:** und **corbaname:** URL-Parser (Spec §13.6.10
24//!   ueber das Naming-Service-Submapping).
25//!
26//! ## Beispiel
27//!
28//! ```
29//! use zerodds_corba_ior::{Ior, ProfileId};
30//! let ior = Ior::default();
31//! assert!(ior.profiles.is_empty());
32//! assert_eq!(ProfileId::InternetIop.as_u32(), 0);
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 component_tags;
43pub mod components;
44pub mod error;
45pub mod ior;
46pub mod profile_tags;
47pub mod stringified;
48pub mod tagged_profile;
49pub mod url;
50
51pub use component_tags::ComponentId;
52pub use components::{
53    AlternateIiopAddress, CodeSetComponent, CodeSetComponentInfo, OrbType, Ssl,
54    StreamFormatVersion, StructuredComponent, TaggedComponent, TlsSecTrans,
55};
56pub use error::{IorError, IorResult};
57pub use ior::Ior;
58pub use profile_tags::ProfileId;
59pub use stringified::{STRINGIFIED_IOR_PREFIX, from_stringified, to_stringified};
60pub use tagged_profile::TaggedProfile;
61pub use url::{CorbalocAddress, CorbanameAddress, parse_corbaloc, parse_corbaname};