snix/tvix/store/src
Florian Klink be48ba75ab feat(tvix/store/pathinfoservice): implement NixHTTPPathInfoService
NixHTTPPathInfoService acts as a bridge in between the Nix HTTP Binary
cache protocol provided by Nix binary caches such as cache.nixos.org,
and the Tvix Store Model.
It implements the [PathInfoService] trait in an interesting way: Every
[PathInfoService::get] fetches the .narinfo and referred NAR file,
inserting components into a [BlobService] and [DirectoryService], then
returning a [PathInfo] struct with the root.
Due to this being quite a costly operation, clients are expected to
layer this service with store composition, so they're only ingested
once.
The client is expected to be (indirectly) using the same [BlobService]
and [DirectoryService], so able to fetch referred Directories and Blobs.
[PathInfoService::put] and [PathInfoService::nar] are not implemented
and return an error if called.

This behaves very similar to the nar-bridge-pathinfo code in nar-bridge,
except it's now in Rust.

Change-Id: Ia03d4fed9d0657965d100299af97cd917a03f2f0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10069
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-11-19 13:19:24 +00:00
..
bin refactor(tvix/castore/tonic): make async, support wait-connect=? 2023-11-15 06:43:31 +00:00
fs refactor(tvix/store/fs): simpllify read 2023-11-18 23:07:24 +00:00
nar feat(nix-compat/nar/reader): provide passthrough buffered I/O 2023-11-19 09:53:10 +00:00
pathinfoservice feat(tvix/store/pathinfoservice): implement NixHTTPPathInfoService 2023-11-19 13:19:24 +00:00
proto feat(tvix/store): From<&nix_compat::...::NarInfo<'_>> for PathInfo 2023-11-18 19:38:15 +00:00
tests refactor(tvix/store/tests/nar_renderer): use castorepb consistently 2023-11-05 12:20:19 +00:00
lib.rs refactor(tvix/store): Upgrade tokio-listener to get tonic support 2023-10-14 18:56:51 +00:00