feat(nix-daemon): Implement QueryPathInfo and IsValidPath.
Change-Id: Ia601e2eae24a2bc13d8851b2e8ed9d6c1808bb35 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12745 Reviewed-by: flokli <flokli@flokli.de> Autosubmit: Vladimir Kryachko <v.kryachko@gmail.com> Tested-by: BuildkiteCI
This commit is contained in:
parent
b564ed9d43
commit
9d114bf040
4 changed files with 182 additions and 12 deletions
|
|
@ -1,7 +1,11 @@
|
|||
use std::sync::Arc;
|
||||
use std::{io::Result, sync::Arc};
|
||||
|
||||
use nix_compat::nix_daemon::NixDaemonIO;
|
||||
use tvix_store::pathinfoservice::PathInfoService;
|
||||
use nix_compat::{
|
||||
nix_daemon::{types::UnkeyedValidPathInfo, NixDaemonIO},
|
||||
nixbase32,
|
||||
store_path::StorePath,
|
||||
};
|
||||
use tvix_store::{path_info::PathInfo, pathinfoservice::PathInfoService};
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub struct TvixDaemon {
|
||||
|
|
@ -15,4 +19,30 @@ impl TvixDaemon {
|
|||
}
|
||||
|
||||
/// Implements [NixDaemonIO] backed by tvix services.
|
||||
impl NixDaemonIO for TvixDaemon {}
|
||||
impl NixDaemonIO for TvixDaemon {
|
||||
async fn query_path_info(
|
||||
&self,
|
||||
path: &StorePath<String>,
|
||||
) -> Result<Option<UnkeyedValidPathInfo>> {
|
||||
match self.path_info_service.get(*path.digest()).await? {
|
||||
Some(path_info) => Ok(Some(into_unkeyed_path_info(path_info))),
|
||||
None => Ok(None),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PathInfo lives in the tvix-store crate, but does not depend on nix-compat's wire feature,
|
||||
// while UnkeyedValidPathInfo is only available if that feature is enabled. To avoid complexity
|
||||
// we manually convert as opposed to creating a From<PathInfo>.
|
||||
fn into_unkeyed_path_info(info: PathInfo) -> UnkeyedValidPathInfo {
|
||||
UnkeyedValidPathInfo {
|
||||
deriver: info.deriver,
|
||||
nar_hash: nixbase32::encode(&info.nar_sha256),
|
||||
references: info.references,
|
||||
registration_time: 0,
|
||||
nar_size: info.nar_size,
|
||||
ultimate: false,
|
||||
signatures: info.signatures,
|
||||
ca: info.ca,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue