Skip to main content

Crate hdds_persistence

Crate hdds_persistence 

Source
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§

PersistenceService
Persistence Service
StandalonePersistenceService
Standalone Persistence Service (without real DDS)