feat(tvix/store/pathinfosvc): add calculate_nar method
Putting this in the PathInfoService trait makes much more sense, we can have direct control over where/how to cache the results in the implementation. This now requires each PathInfoService to hold pointers to BlobService and DirectoryService. Change-Id: I4faae780d43eae4beeb57bd5e190e6d1a5d3314e Reviewed-on: https://cl.tvl.fyi/c/depot/+/8724 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
parent
8d05c0ceaa
commit
6f85dbfc06
12 changed files with 147 additions and 67 deletions
|
|
@ -4,7 +4,7 @@ use thiserror::Error;
|
|||
|
||||
mod renderer;
|
||||
pub use renderer::calculate_size_and_sha256;
|
||||
pub use renderer::writer_nar;
|
||||
pub use renderer::write_nar;
|
||||
|
||||
/// Errors that can encounter while rendering NARs.
|
||||
#[derive(Debug, Error)]
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ pub fn calculate_size_and_sha256<DS: DirectoryService + Clone>(
|
|||
let h = Sha256::new();
|
||||
let mut cw = CountWrite::from(h);
|
||||
|
||||
writer_nar(&mut cw, root_node, blob_service, directory_service)?;
|
||||
write_nar(&mut cw, root_node, blob_service, directory_service)?;
|
||||
|
||||
Ok((cw.count(), cw.into_inner().finalize().into()))
|
||||
}
|
||||
|
|
@ -30,7 +30,7 @@ pub fn calculate_size_and_sha256<DS: DirectoryService + Clone>(
|
|||
/// and uses the passed blob_service and directory_service to
|
||||
/// perform the necessary lookups as it traverses the structure.
|
||||
/// The contents in NAR serialization are writen to the passed [std::io::Write].
|
||||
pub fn writer_nar<W: std::io::Write, DS: DirectoryService + Clone>(
|
||||
pub fn write_nar<W: std::io::Write, DS: DirectoryService + Clone>(
|
||||
w: &mut W,
|
||||
proto_root_node: &proto::node::Node,
|
||||
blob_service: &Box<dyn BlobService>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue