template <>

class WireSyncBufferClientImpl

Defined at line 4346 of file fidling/gen/sdk/fidl/fuchsia.pkg/fuchsia.pkg/cpp/fidl/fuchsia.pkg/cpp/wire_messaging.h

Public Methods

::fidl::WireUnownedResult< ::fuchsia_pkg::PackageCache::Get> Get (const ::fuchsia_pkg::wire::BlobInfo & meta_far_blob, ::fuchsia_pkg::wire::GcProtection gc_protection, ::fidl::ServerEnd< ::fuchsia_pkg::NeededBlobs> && needed_blobs, ::fidl::ServerEnd< ::fuchsia_io::Directory> && dir)

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 closed `needed_blobs` handles before

all the missing blobs were downloaded to the system.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.

::fidl::OneWayStatus WriteBlobs (::fidl::ServerEnd< ::fuchsia_pkg::NeededBlobs> && needed_blobs)

Writes blobs to the system.

This method is intended to be used by package resolver components to write individual blobs

that are missing from the system.

Clients must avoid write collisions of any blobs with `Get()` or another `WriteBlobs()`,

even across different `PackageCache` connections.

+ request `needed_blobs` a protocol can be used to write multiple blobs. This `NeededBlobs`

only supports `OpenBlob` and `BlobWritten`.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.

::fidl::WireUnownedResult< ::fuchsia_pkg::PackageCache::GetSubpackage> GetSubpackage (const ::fuchsia_pkg::wire::BlobId & superpackage, const ::fuchsia_pkg::wire::PackageUrl & subpackage, ::fidl::ServerEnd< ::fuchsia_io::Directory> && dir)

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.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.

::fidl::OneWayStatus BasePackageIndex (::fidl::ServerEnd< ::fuchsia_pkg::PackageIndexIterator> && iterator)

Retrieves a chunk iterator to the base package index.

+ request `iterator` a request for the `PackageIndexIterator` that will return sets of

`PackageIndexEntry` objects until all packages in the base index have been iterated.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.

::fidl::OneWayStatus CachePackageIndex (::fidl::ServerEnd< ::fuchsia_pkg::PackageIndexIterator> && iterator)

Retrieves a chunk iterator to the cache package index.

+ request `iterator` a request for the `PackageIndexIterator` that will return sets of

`PackageIndexEntry` objects until all packages in the cache index have been iterated.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.

::fidl::WireUnownedResult< ::fuchsia_pkg::PackageCache::Sync> Sync ()

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.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.

::fidl::WireUnownedResult< ::fuchsia_pkg::PackageCache::SetUpgradableUrls> SetUpgradableUrls (::fidl::VectorView< ::fuchsia_pkg::wire::PackageUrl> pinned_urls)

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.

Caller provides the backing storage for FIDL message via an argument to `.buffer()`.