diff options
author | Florian Klink <flokli@flokli.de> | 2023-05-22T11·42+0300 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-05-23T10·48+0000 |
commit | 066179651c999e9680edae11817ca4ab42acc1ea (patch) | |
tree | dcc9badcaf27e0a0bc43842e8b3520e39080f351 /tvix/store/src/proto/grpc_blobservice_wrapper.rs | |
parent | b8ff08b1b0d2dbd8dd546dc9cbdea2f11304d5c8 (diff) |
refactor(tvix/store/blobsvc): move from Vec<u8> to B3Digest r/6178
Change-Id: I809bab75221f81b6023cfe75c2fe9e589c1e9192 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8605 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/store/src/proto/grpc_blobservice_wrapper.rs')
-rw-r--r-- | tvix/store/src/proto/grpc_blobservice_wrapper.rs | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/tvix/store/src/proto/grpc_blobservice_wrapper.rs b/tvix/store/src/proto/grpc_blobservice_wrapper.rs index d1e98a5b7953..3ec1d68872c7 100644 --- a/tvix/store/src/proto/grpc_blobservice_wrapper.rs +++ b/tvix/store/src/proto/grpc_blobservice_wrapper.rs @@ -1,8 +1,8 @@ use crate::{ blobservice::{BlobService, BlobWriter}, proto::sync_read_into_async_read::SyncReadIntoAsyncRead, + B3Digest, }; -use data_encoding::BASE64; use std::{collections::VecDeque, io, pin::Pin}; use tokio::task; use tokio_stream::StreamExt; @@ -36,10 +36,7 @@ impl<BS: BlobService + Send + Sync + Clone + 'static> super::blob_service_server request: Request<super::StatBlobRequest>, ) -> Result<Response<super::BlobMeta>, Status> { let rq = request.into_inner(); - let req_digest: [u8; 32] = rq - .digest - .clone() - .try_into() + let req_digest = B3Digest::from_vec(rq.digest) .map_err(|_e| Status::invalid_argument("invalid digest length"))?; if rq.include_chunks || rq.include_bao { @@ -48,10 +45,7 @@ impl<BS: BlobService + Send + Sync + Clone + 'static> super::blob_service_server match self.blob_service.has(&req_digest) { Ok(true) => Ok(Response::new(super::BlobMeta::default())), - Ok(false) => Err(Status::not_found(format!( - "blob {} not found", - BASE64.encode(&req_digest) - ))), + Ok(false) => Err(Status::not_found(format!("blob {} not found", &req_digest))), Err(e) => Err(e.into()), } } @@ -63,11 +57,8 @@ impl<BS: BlobService + Send + Sync + Clone + 'static> super::blob_service_server ) -> Result<Response<Self::ReadStream>, Status> { let rq = request.into_inner(); - let req_digest: [u8; 32] = rq - .digest - .clone() - .try_into() - .map_err(|_| Status::invalid_argument("invalid digest length"))?; + let req_digest = B3Digest::from_vec(rq.digest) + .map_err(|_e| Status::invalid_argument("invalid digest length"))?; match self.blob_service.open_read(&req_digest) { Ok(Some(reader)) => { @@ -87,10 +78,7 @@ impl<BS: BlobService + Send + Sync + Clone + 'static> super::blob_service_server let chunks_stream = ReaderStream::new(async_reader).map(stream_mapper); Ok(Response::new(Box::pin(chunks_stream))) } - Ok(None) => Err(Status::not_found(format!( - "blob {} not found", - BASE64.encode(&rq.digest) - ))), + Ok(None) => Err(Status::not_found(format!("blob {} not found", &req_digest))), Err(e) => Err(e.into()), } } |