pub enum PackageCacheRequest {
Get {
meta_far_blob: BlobInfo,
gc_protection: GcProtection,
needed_blobs: ServerEnd<NeededBlobsMarker>,
dir: ServerEnd<DirectoryMarker>,
responder: PackageCacheGetResponder,
},
GetSubpackage {
superpackage: BlobId,
subpackage: PackageUrl,
dir: ServerEnd<DirectoryMarker>,
responder: PackageCacheGetSubpackageResponder,
},
BasePackageIndex {
iterator: ServerEnd<PackageIndexIteratorMarker>,
control_handle: PackageCacheControlHandle,
},
CachePackageIndex {
iterator: ServerEnd<PackageIndexIteratorMarker>,
control_handle: PackageCacheControlHandle,
},
Sync {
responder: PackageCacheSyncResponder,
},
}
Expand description
This manages the system package cache.
This is intended to be implemented by the package manager component and used by package resolver components.
Variants§
Get
Fields
gc_protection: GcProtection
needed_blobs: ServerEnd<NeededBlobsMarker>
dir: ServerEnd<DirectoryMarker>
responder: PackageCacheGetResponder
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.
GetSubpackage
Fields
subpackage: PackageUrl
dir: ServerEnd<DirectoryMarker>
responder: PackageCacheGetSubpackageResponder
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.
BasePackageIndex
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.
CachePackageIndex
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.
Sync
Fields
responder: PackageCacheSyncResponder
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.
Implementations§
source§impl PackageCacheRequest
impl PackageCacheRequest
pub fn into_get( self ) -> Option<(BlobInfo, GcProtection, ServerEnd<NeededBlobsMarker>, ServerEnd<DirectoryMarker>, PackageCacheGetResponder)>
pub fn into_get_subpackage( self ) -> Option<(BlobId, PackageUrl, ServerEnd<DirectoryMarker>, PackageCacheGetSubpackageResponder)>
pub fn into_base_package_index( self ) -> Option<(ServerEnd<PackageIndexIteratorMarker>, PackageCacheControlHandle)>
pub fn into_cache_package_index( self ) -> Option<(ServerEnd<PackageIndexIteratorMarker>, PackageCacheControlHandle)>
pub fn into_sync(self) -> Option<PackageCacheSyncResponder>
sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL