zerodds-dlrl
Layer 7 — Profiles. DDS Data Local Reconstruction Layer (DLRL), DDS 1.4 §2.2 and Annex B.
- Source: crates/dlrl
- API docs: docs.rs/zerodds-dlrl
DLRL is an optional DDS profile: an object-centric cache on top of DCPS with identity
tracking, relationship resolution and transactional updates (§2.1.3).
zerodds-dlrl provides these parts as an in-memory model; object state is held as
bytes. The crate does not depend on zerodds-dcps. Its only dependency is
portable-atomic, which supplies the 64-bit atomics for the cache sequence counter and
the transaction ids on targets without them (e.g. thumbv7em). It is the only DLRL runtime in the
repository; it targets Rust.
object_cache—ObjectCachekeyed byObjectId(topic name and CDR-encoded DCPS key); object statesNew,Modified,Deleted,Committedwith a version counter;WeakObjectRef, which resolves to nothing once the object is removed;commit_all/rollback_all.transaction—Transaction:begintakes a snapshot of the object versions,commitreturnsOptimisticConflictif an object changed sincebegin,rollbackdiscards the changes;ConsistencyLevel.relationship—RelationshipResolver:RelationshipKindReference/Composition,DirectionMono/Bi,CascadeModeNone/Update/Delete/All, cascade targets for update and delete.subscription—HomeFactorywithHomeListeners registered per topic,ObjectListeners registered per object,SubscriptionRegistry;ObjectChangeKindCreated/Modified/Deleted.query—Querywith topic, state, filter, order and limit, executed against anObjectCache.pragma—parse_pragmafor#pragma DCPS_DATA_TYPE,DCPS_DATA_KEYandDCPS_DLRL_RELATION.metamodel— the DLRL metamodel of DDS 1.2 §8: theObjectRoottrait, class metamodel with mapping information, entity classes and exception types. The source describes this module as a stub layer.
Spec anchors
- OMG DDS 1.4 §2.1.3, §2.2, §B.2 (Cache), §B.3 (
HomeFactory, listeners), §B.4.1 (pragmas), §B.5 (relationships), §B.6 (ObjectRoot; §B.6.4 weak references), §B.7 (query), §B.7.4 (transactions). - OMG DDS 1.2 §8 (DLRL metamodel; §8.1.3–§8.1.6).
- Coverage: dlrl-1.2.
Consumers
zerodds-dlrl-codegen(pragma types; default features off).zerodds-idlc(DlrlPragmaandparse_pragmaforidlc dlrl).
Features
std(default) — enablesalloc; addsstd::error::ErrorforTransactionError,QueryErrorandParsePragmaError.alloc— no further effect; the crate usesallocin every configuration.
Status
#![no_std]withalloc.forbid(unsafe_code).- Library only, no binaries.
- 66 test functions in the source (
src/).
zerodds-dlrl
Layer 7 — Profile. DDS Data Local Reconstruction Layer (DLRL), DDS 1.4 §2.2 und Annex B.
- Quelle: crates/dlrl
- API-Docs: docs.rs/zerodds-dlrl
DLRL ist ein optionales DDS-Profil: ein objektorientierter Cache über DCPS mit
Identitätsverfolgung, Auflösung von Beziehungen und transaktionalen Änderungen (§2.1.3).
zerodds-dlrl stellt diese Teile als Modell im Speicher bereit; der Objektzustand wird
als Bytes gehalten. Das Crate hängt nicht von zerodds-dcps ab. Seine einzige
Abhängigkeit ist portable-atomic, das auf Zielen ohne atomare 64-Bit-Operationen (z. B. thumbv7em)
diese für den Sequenzzähler des Caches und die Transaktions-IDs bereitstellt. Es ist die einzige
DLRL-Laufzeit im Repository; sie ist für Rust bestimmt.
object_cache—ObjectCache, adressiert überObjectId(Name des Topics und CDR-kodierter DCPS-Schlüssel); ObjektzuständeNew,Modified,Deleted,Committedmit Versionszähler;WeakObjectRef, das nach dem Entfernen des Objekts ins Leere zeigt;commit_all/rollback_all.transaction—Transaction:beginhält die Objektversionen fest,commitliefertOptimisticConflict, wenn sich ein Objekt seitbegingeändert hat,rollbackverwirft die Änderungen;ConsistencyLevel.relationship—RelationshipResolver:RelationshipKindReference/Composition,DirectionMono/Bi,CascadeModeNone/Update/Delete/All, Kaskadenziele für Änderung und Löschung.subscription—HomeFactorymit Listenern vom TypHomeListenerje Topic und vom TypObjectListenerje Objekt,SubscriptionRegistry;ObjectChangeKindCreated/Modified/Deleted.query—Querymit Topic, Zustand, Filter, Sortierung und Begrenzung, ausgeführt gegen einenObjectCache.pragma—parse_pragmafür#pragma DCPS_DATA_TYPE,DCPS_DATA_KEYundDCPS_DLRL_RELATION.metamodel— das DLRL-Metamodell aus DDS 1.2 §8: das TraitObjectRoot, Klassen-Metamodell mit Abbildungsinformation, Entitätsklassen und Ausnahmetypen. Der Quelltext bezeichnet dieses Modul als Platzhalterschicht (stub layer).
Spec-Anker
- OMG DDS 1.4 §2.1.3, §2.2, §B.2 (Cache), §B.3 (
HomeFactory, Listener), §B.4.1 (Pragmas), §B.5 (Beziehungen), §B.6 (ObjectRoot; §B.6.4 schwache Referenzen), §B.7 (Abfragen), §B.7.4 (Transaktionen). - OMG DDS 1.2 §8 (DLRL-Metamodell; §8.1.3–§8.1.6).
- Abdeckung: dlrl-1.2.
Konsumenten
zerodds-dlrl-codegen(Pragma-Typen; Default-Features abgeschaltet).zerodds-idlc(DlrlPragmaundparse_pragmafüridlc dlrl).
Features
std(Standard) — aktiviertalloc; ergänztstd::error::ErrorfürTransactionError,QueryErrorundParsePragmaError.alloc— keine weitere Wirkung; das Crate nutztallocin jeder Konfiguration.
Status
#![no_std]mitalloc.forbid(unsafe_code).- Nur Bibliothek, keine Binaries.
- 66 Testfunktionen im Quelltext (
src/).