Skip to main content

loonfs_objectstore/
lib.rs

1//! The LoonFS object-store boundary.
2//!
3//! LoonFS assumes only the narrow provider contract the format spec names —
4//! create-if-absent, compare-and-swap, read-after-write visibility, prefix
5//! listing — and this crate owns that boundary: the [`ObjectStore`] trait,
6//! provider adapters for S3, Cloudflare R2, Google Cloud Storage, Azure Blob
7//! Storage, and the local filesystem, the durable key layout in [`keys`] and
8//! [`layout`], and the contract probe in [`probe`] that proves a configured
9//! store honours that contract — the same checks the conformance suite runs
10//! against real providers.
11
12#![warn(missing_docs)]
13
14pub mod abs;
15mod attempts;
16mod configured;
17pub mod gcs;
18mod immutable_write;
19pub mod keys;
20mod keyspace;
21pub mod layout;
22pub mod local_fs_store;
23pub mod metrics;
24pub mod object_store;
25pub mod presign;
26pub mod probe;
27mod provider_object_store;
28mod retry;
29pub mod s3_compatible;
30mod secret;
31mod store_config;
32mod store_io_runtime;
33#[cfg(test)]
34mod test_support;
35pub mod timing;
36mod transfer_timeouts;
37
38pub use configured::{ConfiguredObjectStore, ConfiguredObjectStoreKind};
39pub use immutable_write::ImmutableWriteError;
40pub use object_store::ObjectStoreError as Error;
41pub use object_store::{
42    ByteRange, ByteStream, MultipartCompletion, MultipartPart, ObjectBody, ObjectMetadata,
43    ObjectStore, ObjectStoreError, PutMode, Result, SharedObjectStore, StoredObjectChecksum,
44};
45pub use probe::{run_store_contract_probe, StoreProbeCheck, StoreProbeOutcome, StoreProbeReport};
46pub use provider_object_store::{
47    ProviderObjectStore, ProviderObjectStoreConfig, PROVIDER_ATTEMPT_TIMEOUT,
48    PROVIDER_CONNECT_TIMEOUT, PROVIDER_MULTIPART_PART_BYTES, PROVIDER_MULTIPART_PART_WINDOW,
49    PROVIDER_MULTIPART_THRESHOLD_BYTES, PROVIDER_OPERATION_DEADLINE, PROVIDER_STREAMED_PART_WINDOW,
50    PROVIDER_TRANSFER_ATTEMPT_TIMEOUT,
51};
52pub use secret::SecretString;
53pub use store_config::{
54    StoreConfig, StoreConfigError, ACCESS_KEY_ID_ENV, SECRET_ACCESS_KEY_ENV, SESSION_TOKEN_ENV,
55};