pub struct PackageCacheProxy { /* private fields */ }
Implementations§
Source§impl PackageCacheProxy
impl PackageCacheProxy
Sourcepub fn take_event_stream(&self) -> PackageCacheEventStream
pub fn take_event_stream(&self) -> PackageCacheEventStream
Get a Stream of events from the remote end of the protocol.
§Panics
Panics if the event stream was already taken.
Sourcepub fn get(
&self,
meta_far_blob: &BlobInfo,
gc_protection: GcProtection,
needed_blobs: ServerEnd<NeededBlobsMarker>,
dir: ServerEnd<DirectoryMarker>,
) -> QueryResponseFut<PackageCacheGetResult, DefaultFuchsiaResourceDialect>
pub fn get( &self, meta_far_blob: &BlobInfo, gc_protection: GcProtection, needed_blobs: ServerEnd<NeededBlobsMarker>, dir: ServerEnd<DirectoryMarker>, ) -> QueryResponseFut<PackageCacheGetResult, DefaultFuchsiaResourceDialect>
Gets the package directory if it is present on the local system. If it is not, the
missing_blobs
iterator will provide all the blobs in the package that are missing from
the system, and the ability to write those blobs to blobfs. If all the missing blobs are
downloaded and written to by the client, the dir
directory will be resolved. This method
will return successfully when the package has been fully resolved, or return an error if
the client closes needed_blobs
or dir
handle before the package has been resolved.
This method does not guarantee the missing blobs have been persisted. In order to guarantee missing blobs are persisted, clients should call [‘Sync’].
Clients must not make concurrent Get()
calls for the same meta_far_blob
, even across
different PackageCache
connections, unless the meta_far_blob
is in base or already
active in the dynamic index. Violating this may result in Get()
errors.
- request
meta_far_blob
the blob info for the package’s meta.far. - request
needed_blobs
an iterator over all the blobs in the package that are not present on the system. - request
dir
the channel on which the package directory will be served.
- error a zx_status value indicating failure. One of the following:
ZX_ERR_UNAVAILABLE
if the client closedneeded_blobs
handles before all the missing blobs were downloaded to the system.
Sourcepub fn get_subpackage(
&self,
superpackage: &BlobId,
subpackage: &PackageUrl,
dir: ServerEnd<DirectoryMarker>,
) -> QueryResponseFut<PackageCacheGetSubpackageResult, DefaultFuchsiaResourceDialect>
pub fn get_subpackage( &self, superpackage: &BlobId, subpackage: &PackageUrl, dir: ServerEnd<DirectoryMarker>, ) -> QueryResponseFut<PackageCacheGetSubpackageResult, DefaultFuchsiaResourceDialect>
Gets the package directory for a subpackage. The connection to the superpackage’s package directory must still be open when this is called. The returned package will be protected by open package tracking.
- request
superpackage
the hash of the superpackage’s meta.far. - request
subpackage
the relative package URL of the subpackage. - request
dir
the channel on which the package directory will be served.
- error a GetSubpackageError value indicating failure.
Sourcepub fn base_package_index(
&self,
iterator: ServerEnd<PackageIndexIteratorMarker>,
) -> Result<(), Error>
pub fn base_package_index( &self, iterator: ServerEnd<PackageIndexIteratorMarker>, ) -> Result<(), Error>
Retrieves a chunk iterator to the base package index.
- request
iterator
a request for thePackageIndexIterator
that will return sets ofPackageIndexEntry
objects until all packages in the base index have been iterated.
Sourcepub fn cache_package_index(
&self,
iterator: ServerEnd<PackageIndexIteratorMarker>,
) -> Result<(), Error>
pub fn cache_package_index( &self, iterator: ServerEnd<PackageIndexIteratorMarker>, ) -> Result<(), Error>
Retrieves a chunk iterator to the cache package index.
- request
iterator
a request for thePackageIndexIterator
that will return sets ofPackageIndexEntry
objects until all packages in the cache index have been iterated.
Sourcepub fn sync(
&self,
) -> QueryResponseFut<PackageCacheSyncResult, DefaultFuchsiaResourceDialect>
pub fn sync( &self, ) -> QueryResponseFut<PackageCacheSyncResult, DefaultFuchsiaResourceDialect>
Synchronizes updates to the cached packages to the underlying persistent storage.
- error a zx_status value indicating failure. One of the following:
ZX_ERR_INTERNAL
if the sync fails.
Sourcepub fn set_upgradable_urls(
&self,
pinned_urls: &[PackageUrl],
) -> QueryResponseFut<PackageCacheSetUpgradableUrlsResult, DefaultFuchsiaResourceDialect>
pub fn set_upgradable_urls( &self, pinned_urls: &[PackageUrl], ) -> QueryResponseFut<PackageCacheSetUpgradableUrlsResult, DefaultFuchsiaResourceDialect>
Sets which package URLs correspond to upgradable packages and the hash they should resolve to.
If upgradable packages are enabled in pkg-cache, this method must be called once on start up to set the hashes for persisted upgradable packages. All such packages must not be base packages. If none of the upgradable packages are persisted, a call with an empty vector still needs to be made. Package resolution of non base packages and GC (and therefore OTA) will block until this is done.
Subsequent calls can be made to set new upgradable packages or change the hashes associated with upgradable packages.
The hash most recently associated with an upgradable package URL will be protected from GC.
- request
pinned_urls
packages URLs pinned to the new hash.
Trait Implementations§
Source§impl Clone for PackageCacheProxy
impl Clone for PackageCacheProxy
Source§fn clone(&self) -> PackageCacheProxy
fn clone(&self) -> PackageCacheProxy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for PackageCacheProxy
impl Debug for PackageCacheProxy
Source§impl PackageCacheProxyInterface for PackageCacheProxy
impl PackageCacheProxyInterface for PackageCacheProxy
type GetResponseFut = QueryResponseFut<Result<(), i32>>
type GetSubpackageResponseFut = QueryResponseFut<Result<(), GetSubpackageError>>
type SyncResponseFut = QueryResponseFut<Result<(), i32>>
type SetUpgradableUrlsResponseFut = QueryResponseFut<Result<(), SetUpgradableUrlsError>>
fn get( &self, meta_far_blob: &BlobInfo, gc_protection: GcProtection, needed_blobs: ServerEnd<NeededBlobsMarker>, dir: ServerEnd<DirectoryMarker>, ) -> Self::GetResponseFut
fn get_subpackage( &self, superpackage: &BlobId, subpackage: &PackageUrl, dir: ServerEnd<DirectoryMarker>, ) -> Self::GetSubpackageResponseFut
fn base_package_index( &self, iterator: ServerEnd<PackageIndexIteratorMarker>, ) -> Result<(), Error>
fn cache_package_index( &self, iterator: ServerEnd<PackageIndexIteratorMarker>, ) -> Result<(), Error>
fn sync(&self) -> Self::SyncResponseFut
fn set_upgradable_urls( &self, pinned_urls: &[PackageUrl], ) -> Self::SetUpgradableUrlsResponseFut
Source§impl Proxy for PackageCacheProxy
impl Proxy for PackageCacheProxy
Source§type Protocol = PackageCacheMarker
type Protocol = PackageCacheMarker
Proxy
controls.Source§fn from_channel(inner: AsyncChannel) -> Self
fn from_channel(inner: AsyncChannel) -> Self
Source§fn into_channel(self) -> Result<AsyncChannel, Self>
fn into_channel(self) -> Result<AsyncChannel, Self>
Source§fn as_channel(&self) -> &AsyncChannel
fn as_channel(&self) -> &AsyncChannel
§fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
Auto Trait Implementations§
impl Freeze for PackageCacheProxy
impl !RefUnwindSafe for PackageCacheProxy
impl Send for PackageCacheProxy
impl Sync for PackageCacheProxy
impl Unpin for PackageCacheProxy
impl !UnwindSafe for PackageCacheProxy
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)