edgestore_repl/lib.rs
1//! `edgestore-repl` — HTTP transport layer and pull-only anti-entropy loop.
2//!
3//! Provides:
4//! - `HttpReplicationClient` — implements `ReplicationProtocol` over HTTP + MessagePack (D07)
5//! - `HttpReplicationServer` — serves 3 pull-only endpoints with `?debug=json` support (D07)
6//! - `AntiEntropyLoop` — background thread for pull-only sync with per-peer cursor (D08)
7//! - `S3RemoteStore` (with `s3` feature) — `RemoteStore` impl using AWS SDK for S3
8//!
9//! ## What this crate does NOT do
10//!
11//! `edgestore-repl` is a **transport** crate. It moves segments between nodes or to S3.
12//! It does **not** implement:
13//! - Cache eviction / tiering policy (which segments stay local vs. go to S3)
14//! - Transparent read-through (automatic `get()` fallback to S3 on miss)
15//! - Prefetch or cache warming
16//!
17//! Those are application-level concerns. You can build them yourself using the
18//! `RemoteStore` primitives exported here, or wait for a future `edgestore-tier` crate.
19//! See ARCHITECTURE.md in the repo root for the full pattern.
20
21pub mod anti_entropy;
22pub mod filesystem_remote_store;
23pub mod http_client;
24pub mod http_server;
25
26#[cfg(feature = "s3")]
27pub mod s3_remote_store;
28
29pub use anti_entropy::{AntiEntropyLoop, PeerCursor};
30pub use filesystem_remote_store::FilesystemRemoteStore;
31pub use http_client::HttpReplicationClient;
32pub use http_server::HttpReplicationServer;
33
34#[cfg(feature = "s3")]
35pub use s3_remote_store::S3RemoteStore;