Expand description
HDDS Persistence Service
Provides TRANSIENT and PERSISTENT durability QoS support for DDS topics.
§Features
- SQLite Backend – Zero-dependency, production-ready persistent storage
- RocksDB Backend – High-performance embedded database (feature flag)
- Late-joiner Support – Replay historical samples to new readers
- Retention Policies – Time-based, count-based, and size-based limits
§Architecture
PersistenceService
+-- DurabilitySubscriber (listens to TRANSIENT/PERSISTENT topics)
+-- LateJoinerPublisher (replays history to new readers)
+-- PersistenceStore (SQLite or RocksDB backend)§Example
ⓘ
use hdds_persistence::{PersistenceService, Config, SqliteStore};
let config = Config::builder()
.topic_filter("State/*")
.retention_count(1000)
.build();
let store = SqliteStore::new("hdds_persist.db")?;
let service = PersistenceService::new(config, store);
service.run().await?;Re-exports§
pub use config::Config;pub use dds_interface::DataReader;pub use dds_interface::DataWriter;pub use dds_interface::DdsInterface;pub use dds_interface::DiscoveredReader;pub use dds_interface::DiscoveredWriter;pub use dds_interface::DurabilityKind;pub use dds_interface::MockDdsInterface;pub use dds_interface::ReceivedSample;pub use hdds_interface::HddsDdsInterface;pub use publisher::LateJoinerPublisher;pub use publisher::PublisherStats;pub use publisher::StandalonePublisher;pub use sqlite::SqliteStore;pub use store::PersistenceStore;pub use store::Sample;pub use subscriber::DurabilitySubscriber;pub use subscriber::StandaloneSubscriber;pub use subscriber::SubscriberStats;
Modules§
- config
- Persistence service configuration
- dds_
interface - DDS Interface Abstraction
- hdds_
interface - HDDS-backed DDS interface implementation.
- publisher
- Late-joiner publisher
- sqlite
- SQLite persistence backend
- store
- Persistence store abstraction
- subscriber
- Durability subscriber
Structs§
- Persistence
Service - Persistence Service
- Standalone
Persistence Service - Standalone Persistence Service (without real DDS)