refactor(tvix/store): use Box<dyn DirectoryService>
Once we support configuring services at runtime, we don't know what DirectoryService we're using at compile time. This also means, we can't explicitly use the is_closed method from GRPCPutter, without making it part of the DirectoryPutter itself. Change-Id: Icd2a1ec4fc5649a6cd15c9cc7db4c2b473630431 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8727 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
This commit is contained in:
parent
6f85dbfc06
commit
7725eb53ad
18 changed files with 144 additions and 126 deletions
|
|
@ -13,10 +13,10 @@ use tracing::warn;
|
|||
|
||||
/// Invoke [render_nar], and return the size and sha256 digest of the produced
|
||||
/// NAR output.
|
||||
pub fn calculate_size_and_sha256<DS: DirectoryService + Clone>(
|
||||
pub fn calculate_size_and_sha256(
|
||||
root_node: &proto::node::Node,
|
||||
blob_service: &Box<dyn BlobService>,
|
||||
directory_service: DS,
|
||||
directory_service: &Box<dyn DirectoryService>,
|
||||
) -> Result<(u64, [u8; 32]), RenderError> {
|
||||
let h = Sha256::new();
|
||||
let mut cw = CountWrite::from(h);
|
||||
|
|
@ -30,11 +30,11 @@ 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 write_nar<W: std::io::Write, DS: DirectoryService + Clone>(
|
||||
pub fn write_nar<W: std::io::Write>(
|
||||
w: &mut W,
|
||||
proto_root_node: &proto::node::Node,
|
||||
blob_service: &Box<dyn BlobService>,
|
||||
directory_service: DS,
|
||||
directory_service: &Box<dyn DirectoryService>,
|
||||
) -> Result<(), RenderError> {
|
||||
// Initialize NAR writer
|
||||
let nar_root_node = nar::writer::open(w).map_err(RenderError::NARWriterError)?;
|
||||
|
|
@ -49,11 +49,11 @@ pub fn write_nar<W: std::io::Write, DS: DirectoryService + Clone>(
|
|||
|
||||
/// Process an intermediate node in the structure.
|
||||
/// This consumes the node.
|
||||
fn walk_node<DS: DirectoryService + Clone>(
|
||||
fn walk_node(
|
||||
nar_node: nar::writer::Node,
|
||||
proto_node: &proto::node::Node,
|
||||
blob_service: &Box<dyn BlobService>,
|
||||
directory_service: DS,
|
||||
directory_service: &Box<dyn DirectoryService>,
|
||||
) -> Result<(), RenderError> {
|
||||
match proto_node {
|
||||
proto::node::Node::Symlink(proto_symlink_node) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue