Struct wasmer_wasix::runtime::resolver::WebSource
source · pub struct WebSource {
cache_dir: PathBuf,
client: Arc<dyn HttpClient + Send + Sync>,
retry_period: Duration,
}
Expand description
A Source
which can query arbitrary packages on the internet.
§Implementation Notes
Unlike other Source
implementations, this will need to download
a package if it is a PackageSource::Url
. Optionally, these downloaded
packages can be cached in a local directory.
After a certain period (WebSource::with_retry_period()
), the
WebSource
will re-check the uploaded source to make sure the cached
package is still valid. This checking is done using the ETag header,
if available.
Fields§
§cache_dir: PathBuf
§client: Arc<dyn HttpClient + Send + Sync>
§retry_period: Duration
Implementations§
source§impl WebSource
impl WebSource
pub const DEFAULT_RETRY_PERIOD: Duration = _
pub fn new( cache_dir: impl Into<PathBuf>, client: Arc<dyn HttpClient + Send + Sync>, ) -> Self
sourcepub fn with_retry_period(self, retry_period: Duration) -> Self
pub fn with_retry_period(self, retry_period: Duration) -> Self
Set the period after which an item should be marked as “possibly dirty” in the cache.
sourceasync fn get_locally_cached_file(&self, url: &Url) -> Result<PathBuf, Error>
async fn get_locally_cached_file(&self, url: &Url) -> Result<PathBuf, Error>
Download a package and cache it locally.
async fn atomically_save_file( &self, path: impl AsRef<Path>, data: &[u8], ) -> Result<(), Error>
async fn get_etag(&self, url: &Url) -> Result<String, Error>
async fn fetch(&self, url: &Url) -> Result<(Vec<u8>, Option<String>), Error>
async fn load_url(&self, url: &Url) -> Result<Vec<PackageSummary>, Error>
Trait Implementations§
source§impl Source for WebSource
impl Source for WebSource
source§fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
package: &'life1 PackageSource,
) -> Pin<Box<dyn Future<Output = Result<Vec<PackageSummary>, QueryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
package: &'life1 PackageSource,
) -> Pin<Box<dyn Future<Output = Result<Vec<PackageSummary>, QueryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Ask this source which packages would satisfy a particular
Dependency
constraint. Read moresource§fn latest<'life0, 'life1, 'async_trait>(
&'life0 self,
pkg: &'life1 PackageSource,
) -> Pin<Box<dyn Future<Output = Result<PackageSummary, QueryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn latest<'life0, 'life1, 'async_trait>(
&'life0 self,
pkg: &'life1 PackageSource,
) -> Pin<Box<dyn Future<Output = Result<PackageSummary, QueryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Run
Source::query()
and get the PackageSummary
for the latest
version.Auto Trait Implementations§
impl Freeze for WebSource
impl !RefUnwindSafe for WebSource
impl Send for WebSource
impl Sync for WebSource
impl Unpin for WebSource
impl !UnwindSafe for WebSource
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> Upcastable for T
impl<T> Upcastable for T
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
§impl<T> Upcastable for T
impl<T> Upcastable for T
§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref
§fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
upcast boxed dyn