commonware_storage/qmdb/sync/
mod.rs1use crate::qmdb::sync::engine::Config;
4use commonware_codec::Encode;
5use commonware_macros::boxed;
6
7pub mod engine;
8pub(crate) use engine::Engine;
9
10mod error;
11pub use error::{EngineError, Error};
12
13mod gaps;
14mod journal;
15pub(crate) use journal::Journal;
16
17mod metrics;
18pub use metrics::Metrics;
19
20mod database;
21pub(crate) use database::{
22 journal_covers_range, local_boundary_nodes, Config as DatabaseConfig, Database,
23};
24
25pub mod resolver;
26pub(crate) use resolver::{FetchResult, Resolver};
27
28mod target;
29pub use target::Target;
30
31pub mod compact;
32mod requests;
33
34pub trait DbResolver<DB: Database>:
38 Resolver<Family = DB::Family, Op = DB::Op, Digest = DB::Digest>
39{
40}
41
42impl<DB, R> DbResolver<DB> for R
43where
44 DB: Database,
45 R: Resolver<Family = DB::Family, Op = DB::Op, Digest = DB::Digest>,
46{
47}
48
49#[boxed]
51pub async fn sync<DB, R>(
52 config: Config<DB, R>,
53) -> Result<DB, Error<DB::Family, R::Error, DB::Digest>>
54where
55 DB: Database,
56 DB::Op: Encode,
57 R: DbResolver<DB>,
58{
59 Box::pin(Engine::new(config).await?.sync()).await
60}