about summary refs log tree commit diff
path: root/tvix/store/src/blobservice/mod.rs
blob: 53e941795e7ef50833894d0ea18cdd29bdbba97e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use crate::{proto, Error};

mod memory;
mod sled;

pub use self::memory::MemoryBlobService;
pub use self::sled::SledBlobService;

/// The base trait all BlobService services need to implement.
/// It provides information about how a blob is chunked,
/// and allows creating new blobs by creating a BlobMeta (referring to chunks
/// in a [crate::chunkservice::ChunkService]).
pub trait BlobService {
    /// Retrieve chunking information for a given blob
    fn stat(&self, req: &proto::StatBlobRequest) -> Result<Option<proto::BlobMeta>, Error>;

    /// Insert chunking information for a given blob.
    /// Implementations SHOULD make sure chunks referred do exist.
    fn put(&self, blob_digest: &[u8], blob_meta: proto::BlobMeta) -> Result<(), Error>;
}