Skip to main content

zerodds_dlrl/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! DDS Data-Local-Reconstruction-Layer (DLRL) — DDS 1.4 §2.2 + §B.
5//!
6//! Crate `zerodds-dlrl`. Safety classification: **STANDARD**.
7//!
8//! DLRL (Data Local Reconstruction Layer) is an optional DDS profile
9//! that provides an object-centric cache on top of DCPS with identity
10//! tracking, relationship resolution, and transactional updates
11//! (Spec §2.1.3).
12//!
13//! # Modules
14//!
15//! * [`object_cache`] — object cache with identity tracking + WeakRef
16//!   (Spec §B.2 + §B.6).
17//! * [`transaction`] — transaction semantics with optimistic concurrency
18//!   (Spec §B.7.4).
19//! * [`relationship`] — relationship resolver (mono/bidirectional,
20//!   compositional/referential, cascaded update/delete) (Spec §B.5).
21//! * [`subscription`] — HomeFactory/HomeListener/ObjectListener
22//!   (Spec §B.3 + §B.6).
23//! * [`query`] — query engine with filter/order/limit (Spec §B.7).
24//! * [`pragma`] — DLRL pragma parser (`#pragma DCPS_DATA_TYPE` etc.).
25
26#![no_std]
27#![forbid(unsafe_code)]
28#![warn(missing_docs)]
29
30extern crate alloc;
31
32#[cfg(feature = "std")]
33extern crate std;
34
35pub mod metamodel;
36pub mod object_cache;
37pub mod pragma;
38pub mod query;
39pub mod relationship;
40pub mod subscription;
41pub mod transaction;
42
43pub use object_cache::{ObjectCache, ObjectId, ObjectRef, WeakObjectRef};
44pub use pragma::{DlrlPragma, ParsePragmaError, parse_pragma};
45pub use query::{Query, QueryError, QueryResult, SortOrder};
46pub use relationship::{
47    CascadeMode, Direction, Relationship, RelationshipKind, RelationshipResolver,
48};
49pub use subscription::{
50    HomeFactory, HomeListener, ObjectChangeKind, ObjectListener, SubscriptionRegistry,
51};
52pub use transaction::{
53    ConsistencyLevel, Transaction, TransactionError, TransactionId, TransactionState,
54};