Skip to main content

RemoteCacheClient

Struct RemoteCacheClient 

Source
pub struct RemoteCacheClient { /* private fields */ }
Expand description

A client for a remote mbx cache.

The client validates digests, response sizes, media types, and redirects at the protocol boundary. It is safe to share between asynchronous tasks.

Which service is on the other end is not part of this type’s contract. A cache server speaks the full protocol; an object store answers the same lookups without the extensions built on top of it, and reports that by declining them rather than by failing.

Implementations§

Source§

impl RemoteCacheClient

Source

pub fn new(config: RemoteCacheConfig) -> Result<Self>

Construct a client and validate its URL and authentication settings.

Source

pub fn new_s3(config: S3RemoteCacheConfig) -> Result<Self>

Construct a client backed directly by an S3-compatible object store.

The store answers the same lookups a cache server does, without the extensions built on top of the protocol. See S3RemoteCacheConfig.

Source

pub async fn check_connection(&self) -> Result<()>

Connect to the service, authenticate, and negotiate protocol capabilities.

This performs no cache reads or writes. It is intended for diagnostics that need to distinguish a valid client configuration from a reachable, compatible remote cache.

Source

pub async fn get_blob_pack( &self, digests: &[CacheDigest], staging_dir: &Path, ) -> Result<Option<RemoteBlobPack>>

Download verified CAS objects using the server’s negotiated blob-pack extension.

None means the service does not support blob packs. Objects omitted by a supported server are absent from blobs, so callers can retry them through the ordinary single-blob endpoint.

Source

pub async fn get_action_result( &self, action: &CacheDigest, ) -> Result<Option<RemoteActionResult>>

Fetch and validate an action-result record, returning None on a miss.

Source

pub async fn get_action_results( &self, actions: &[CacheDigest], ) -> Result<Option<Vec<RemoteActionResult>>>

Look up several action results in one request.

None means the service does not answer batched lookups, leaving the caller to ask for each action individually. The response carries only the results the service holds, in no particular order, so each record is bound to its request by the action digest it names rather than by position.

Source

pub async fn put_action_result(&self, result: &RemoteActionResult) -> Result<()>

Canonically serialize and store an action-result record.

Source

pub async fn join_action_promise( &self, invocation: &CacheDigest, adapter: &str, ) -> Result<Option<ActionPromiseState>>

Atomically join or claim a server-wide compilation promise.

None means this backend does not support ephemeral coordination.

Source

pub async fn complete_action_promise( &self, invocation: &CacheDigest, completion: &ActionPromiseCompletion, ) -> Result<bool>

Complete a claimed promise after its action result has been published.

false means this backend does not support ephemeral coordination.

Source

pub async fn get_action_manifest( &self, key: &CacheDigest, ) -> Result<Option<RemoteActionManifest>>

Fetch a task action manifest and the entity tag needed to update it.

Source

pub async fn put_action_manifest( &self, key: &CacheDigest, bytes: &[u8], expected_etag: Option<&str>, ) -> Result<ManifestPutOutcome>

Store a task action manifest, optionally requiring an entity-tag match.

Source

pub async fn get_blob( &self, digest: &CacheDigest, media_type: &'static str, ) -> Result<Vec<u8>>

Download a small blob into memory and verify its digest.

Source

pub async fn get_blob_file( &self, digest: &CacheDigest, staging_dir: &Path, ) -> Result<NamedTempFile>

Download a blob to a temporary file and verify its digest.

Source

pub async fn put_blob_pack( &self, uploads: &[BlobUpload], ) -> Result<Option<BlobPackReceipt>>

Upload several content-addressed blobs in one framed request.

None means the service does not accept packed uploads, leaving the caller to send each blob on its own. A rejected pack is reported as an error and publishes nothing the caller may rely on: a server verifies each frame as it arrives, so an accepted prefix may exist, but every blob is content-addressed and storing one twice is not an error.

Source

pub async fn put_blob(&self, upload: &BlobUpload) -> Result<()>

Verify and upload a content-addressed blob.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more