mod chunking;
mod codec;
mod context;
mod kv;
pub(crate) mod metrics;
#[cfg(test)]
mod stats;
mod types;
use std::collections::{BTreeMap, BTreeSet};
#[cfg(all(feature = "storage-benches", test))]
pub(crate) use codec::encode_binary_cas_manifest;
#[cfg(feature = "storage-benches")]
pub(crate) use codec::{
BinaryCasManifest, StorageBinaryCasDeltaBaseLayout, decode_binary_cas_chunk,
decode_binary_cas_manifest, decode_binary_cas_manifest_chunk,
};
pub(crate) use context::{BinaryCasContext, BlobDataReader};
pub(crate) use kv::load_bytes_many;
pub(crate) use kv::{
BINARY_CAS_CHUNK_PRESENCE_SPACE, BINARY_CAS_CHUNK_SPACE, BINARY_CAS_MANIFEST_CHUNK_SPACE,
BINARY_CAS_MANIFEST_SPACE,
};
pub(crate) use types::{
BlobBytesBatch, BlobChunkReceipt, BlobDeltaBaseLayout, BlobDeltaSegment, BlobEditSplice,
BlobId, BlobLayout, BlobMetadata, BlobMetadataBatch, BlobPayload, BlobRangeBytes,
BlobRangeBytesBatch, BlobSameLengthSplice, BlobWriteReceipt, ChunkHash,
};
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub(crate) struct BinaryCasGcSweep {
pub(crate) live_blob_count: usize,
pub(crate) live_chunk_count: usize,
pub(crate) reclaimed_manifest_rows: usize,
pub(crate) reclaimed_manifest_chunk_rows: usize,
pub(crate) reclaimed_chunk_rows: usize,
}
pub(crate) async fn stage_gc_reclamation(
store: &(impl crate::storage_adapter::StorageAdapterRead + ?Sized),
writes: &mut crate::storage_adapter::StorageWriteSet,
blob_roots: &BTreeSet<BlobId>,
upload_chunks: &BTreeMap<ChunkHash, u64>,
) -> Result<BinaryCasGcSweep, crate::LixError> {
kv::stage_reclaim_unreachable_binary_cas(store, writes, blob_roots, upload_chunks).await
}
pub(crate) async fn stage_cas_publication_fence(
store: &(impl crate::storage_adapter::StorageAdapterRead + ?Sized),
writes: &mut crate::storage_adapter::StorageWriteSet,
preconditions: &mut Vec<crate::storage_adapter::StoragePrecondition>,
) -> Result<(), crate::LixError> {
kv::stage_publication_fence(store, writes, preconditions).await
}
pub(crate) async fn stage_cas_reclamation_fence(
store: &(impl crate::storage_adapter::StorageAdapterRead + ?Sized),
writes: &mut crate::storage_adapter::StorageWriteSet,
preconditions: &mut Vec<crate::storage_adapter::StoragePrecondition>,
) -> Result<(), crate::LixError> {
kv::stage_reclamation_fence(store, writes, preconditions).await
}