| <link rel="stylesheet" href="../style.css" /> |
| |
| [TOC] |
| |
| # fuchsia.pkg |
| |
| |
| |
| ## **PROTOCOLS** |
| |
| ## BlobIdIterator {#BlobIdIterator} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=236)* |
| |
| <p>A chunked iterator of blob IDs, allowing transfer of more blob IDs that can |
| fit in a single FIDL message.</p> |
| |
| |
| ### Next {#BlobIdIterator.Next} |
| |
| <p>Responds with the next chunk of blob IDs. When the iterator is |
| exhausted, responds with an empty vector and closes the connection.</p> |
| <ul> |
| <li>response <code>blobs</code> the next chunk of blob IDs.</li> |
| </ul> |
| |
| |
| #### Request {#BlobIdIterator.Next_Request} |
| <EMPTY> |
| |
| |
| #### Response {#BlobIdIterator.Next_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>blobs</code></td> |
| <td> |
| <code>vector<<a class='link' href='#BlobId'>BlobId</a>></code> |
| </td> |
| </tr></table> |
| |
| ## BlobInfoIterator {#BlobInfoIterator} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=184)* |
| |
| <p>A chunked iterator of <a class='link' href='#BlobInfo'>BlobInfo</a>, allowing transfer of more <a class='link' href='#BlobInfo'>BlobInfo</a>s |
| that can fit in a single FIDL message.</p> |
| |
| |
| ### Next {#BlobInfoIterator.Next} |
| |
| <p>Responds with the next chunk of <a class='link' href='#BlobInfo'>BlobInfo</a>s. When the iterator is |
| exhausted, responds with an empty vector and closes the connection.</p> |
| <ul> |
| <li>response <code>blobs</code> the next chunk of <a class='link' href='#BlobInfo'>BlobInfo</a>s.</li> |
| </ul> |
| |
| |
| #### Request {#BlobInfoIterator.Next_Request} |
| <EMPTY> |
| |
| |
| #### Response {#BlobInfoIterator.Next_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>blobs</code></td> |
| <td> |
| <code>vector<<a class='link' href='#BlobInfo'>BlobInfo</a>></code> |
| </td> |
| </tr></table> |
| |
| ## FontResolver {#FontResolver} |
| *Defined in [fuchsia.pkg/font_resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/font_resolver.fidl;l=18)* |
| |
| <p>This resolves font packages from a registry.</p> |
| <p>This is intended to be implemented by package resolver components, and used |
| exclusively by fuchsia.fonts.Provider.</p> |
| <p>DEPRECATED. This is an interim solution, and will be revisited when Component Framework v2 |
| becomes available and allows non-component packages and easier directory routing.</p> |
| <p><b>DEPRECATED </b>- For use only in Font Provider. To be replaced after Components v2 launch.</p> |
| |
| ### Resolve {#FontResolver.Resolve} |
| |
| <p>Populates or updates the cache of a font package, fetching it if it is not present on the |
| local system.</p> |
| <ul> |
| <li>request <code>package_url</code> the package URL of a font package.</li> |
| <li>request <code>directory_request</code> a request for a directory that will be resolved when the |
| package has been successfully cached. The directory should contain a single file, |
| corresponding to the asset filename. The client should retain the directory handle |
| for as long as needed to prevent the package from being evicted from cache.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_ACCESS_DENIED</code> if the resolver does not have permission to fetch a |
| package blob.</li> |
| <li><code>ZX_ERR_IO</code> if there is some other unspecified error during I/O.</li> |
| <li><code>ZX_ERR_NOT_FOUND</code> if the font package or a package blob does not exist, or is |
| not known to be a font package.</li> |
| <li><code>ZX_ERR_NO_SPACE</code> if there is no space available to store the package.</li> |
| <li><code>ZX_ERR_UNAVAILABLE</code> if the resolver is currently unable to fetch a package blob.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#FontResolver.Resolve_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>package_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| </tr><tr> |
| <td><code>directory_request</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Directory'>Directory</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#FontResolver.Resolve_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#FontResolver_Resolve_Result'>FontResolver_Resolve_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ## LocalMirror {#LocalMirror} |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=10)* |
| |
| <p>A collection of TUF repositories contained in an attached storage device.</p> |
| |
| |
| ### GetBlob {#LocalMirror.GetBlob} |
| |
| <p>Obtains and returns a blob from an attached storage device.</p> |
| <ul> |
| <li>request <code>blob_id</code> the id of the blob to return.</li> |
| <li>request <code>blob</code> a server end for a blob file to be opened |
| with <code>OPEN_RIGHT_READABLE | OPEN_FLAG_DESCRIBE</code>. If the blobs |
| directory exists but the requested file does not, the client end |
| will receive an OnOpen with <code>Status::NOT_FOUND</code>.</li> |
| </ul> |
| <ul> |
| <li>error a <code>GetBlobError</code> value</li> |
| </ul> |
| |
| |
| #### Request {#LocalMirror.GetBlob_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>blob_id</code></td> |
| <td> |
| <code><a class='link' href='#BlobId'>BlobId</a></code> |
| </td> |
| </tr><tr> |
| <td><code>blob</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#File'>File</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#LocalMirror.GetBlob_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#LocalMirror_GetBlob_Result'>LocalMirror_GetBlob_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### GetMetadata {#LocalMirror.GetMetadata} |
| |
| <p>Obtains and returns a named TUF metadata file from an attached storage |
| device.</p> |
| <ul> |
| <li>request <code>repo_url</code> the URL of the TUF repository for which to return |
| metadata.</li> |
| <li>request <code>path</code> the path of the metadata file, relative to the |
| repository_metadata directory for the specific TUF repository.</li> |
| <li>request <code>metadata</code> a server end for a TUF metadata file to be opened |
| with <code>OPEN_RIGHT_READABLE | OPEN_FLAG_DESCRIBE</code>. If the metadata |
| directory exists but the requested file does not, the client end |
| will receive an OnOpen with <code>Status::NOT_FOUND</code>.</li> |
| </ul> |
| <ul> |
| <li>error a <code>GetMetadataError</code> value</li> |
| </ul> |
| |
| |
| #### Request {#LocalMirror.GetMetadata_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>repo_url</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryUrl'>RepositoryUrl</a></code> |
| </td> |
| </tr><tr> |
| <td><code>path</code></td> |
| <td> |
| <code>string[4096]</code> |
| </td> |
| </tr><tr> |
| <td><code>metadata</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#File'>File</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#LocalMirror.GetMetadata_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#LocalMirror_GetMetadata_Result'>LocalMirror_GetMetadata_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ## NeededBlobs {#NeededBlobs} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=105)* |
| |
| <p>Represents the transaction for caching a particular package.</p> |
| <p>Server expects client to follow the normal operation sequence defined below. |
| Violating the protocol (e.g. calling wrong methods at the wrong time) will result |
| in the channel being closed by the package cache with a <code>ZX_ERR_BAD_STATE</code> epitaph |
| and aborting the package cache operation. |
| If a fatal error occurs at any step, server will close the channel, and client |
| should not proceed with the sequence. |
| Non-fatal errors could be retried, as long as the channel remains open.</p> |
| <p>Normal operation sequence:</p> |
| <ol> |
| <li>Clients should start by requesting to <code>OpenMetaBlob()</code>, and fetch and write |
| the metadata blob if needed.</li> |
| <li><code>GetMissingBlobs()</code> should be used to determine which content blobs need |
| fetched and written.</li> |
| <li>Each of the missing content blobs needs to be written using <code>OpenBlob()</code>.</li> |
| </ol> |
| <p>Once all needed blobs are written by the client, the package cache will |
| complete the pending <a class='link' href='#PackageCache.Get'>PackageCache.Get</a> request and close this channel |
| with a <code>ZX_OK</code> epitaph.</p> |
| |
| |
| ### Abort {#NeededBlobs.Abort} |
| |
| <p>Aborts this caching operation for the package.</p> |
| <p>Any open blobs and any missing blobs iterator will be closed. Any <code>dir</code> |
| provided to the associated <a class='link' href='#PackageCache.Get'>PackageCache.Get</a> request will also be |
| closed. Once this request is acknowledged, this channel will be closed.</p> |
| <p>Note, dropping this NeededBlobs channel without writing all needed blobs |
| will also abort the package cache operation. However, this API provides |
| the ability to wait for the operation to be torn down.</p> |
| |
| |
| #### Request {#NeededBlobs.Abort_Request} |
| <EMPTY> |
| |
| |
| #### Response {#NeededBlobs.Abort_Response} |
| <EMPTY> |
| |
| ### GetMissingBlobs {#NeededBlobs.GetMissingBlobs} |
| |
| <p>Returns an iterator of blobs that are not present on the system that |
| must be written using the <code>OpenBlob</code> request before the package will be |
| fully cached.</p> |
| <p>Client should call <code>OpenMetaBlob</code>, and write it if needed, before |
| calling <code>GetMissingBlobs</code>.</p> |
| <p>A client should make this request no more than once per <code>NeededBlobs</code> |
| connection. Once all blobs yielded by this iterator are written, the |
| package open request will complete.</p> |
| <ul> |
| <li>request <code>iterator</code> a request for an iterator of <a class='link' href='#BlobInfo'>BlobInfo</a> of blobs |
| that the client should try to write.</li> |
| </ul> |
| |
| |
| #### Request {#NeededBlobs.GetMissingBlobs_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>iterator</code></td> |
| <td> |
| <code>request<<a class='link' href='#BlobInfoIterator'>BlobInfoIterator</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| |
| ### OpenBlob {#NeededBlobs.OpenBlob} |
| |
| <p>Opens a content blob for writing.</p> |
| <ul> |
| <li>request <code>blob_id</code> the blob id describing this blob.</li> |
| <li>request <code>file</code> resolves to an opened writable file which must be |
| truncated to the correct size by the caller and then written from |
| start to finish (seeks are not supported). A corrupt blob is indicated |
| by a <code>Write()</code> (usually the final write) failing with |
| <code>ZX_ERR_IO_DATA_INTEGRITY</code>. On error or a response of <code>false</code>, <code>file</code> |
| will be closed by the server.</li> |
| </ul> |
| <ul> |
| <li>response <code>needed</code> <code>true</code> if the blob is still needed and should be |
| written by the client. On <code>false</code>, the blob now exists, does not |
| need to be written by the client, and <code>file</code> will be closed.</li> |
| </ul> |
| <ul> |
| <li>error an OpenBlobError indicating failure. Clients may retry this |
| request, though the server end may abort this cache operation on |
| errors it considers to be fatal.</li> |
| </ul> |
| |
| |
| #### Request {#NeededBlobs.OpenBlob_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>blob_id</code></td> |
| <td> |
| <code><a class='link' href='#BlobId'>BlobId</a></code> |
| </td> |
| </tr><tr> |
| <td><code>file</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#File'>File</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#NeededBlobs.OpenBlob_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#NeededBlobs_OpenBlob_Result'>NeededBlobs_OpenBlob_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### OpenMetaBlob {#NeededBlobs.OpenMetaBlob} |
| |
| <p>Opens the package's metadata blob for writing. <code>GetMissingBlobs()</code> |
| should not be called until writing the meta blob or this request |
| responds with <code>false</code>.</p> |
| <p>If the package was already cached, server will close the channel |
| with a <code>ZX_OK</code> epitaph.</p> |
| <ul> |
| <li>request <code>file</code> resolves to an opened writable file which must be |
| truncated to the correct size by the caller and then written from |
| start to finish (seeks are not supported). A corrupt blob is indicated |
| by a <code>Write()</code> (usually the final write) failing with |
| <code>ZX_ERR_IO_DATA_INTEGRITY</code>. On error or a response of <code>false</code>, <code>file</code> |
| will be closed by the server.</li> |
| </ul> |
| <ul> |
| <li>response <code>needed</code> <code>true</code> if the blob is still needed and should be |
| written by the client. On <code>false</code>, the blob now exists, does not |
| need to be written by the client, and <code>file</code> will be closed.</li> |
| </ul> |
| <ul> |
| <li>error an OpenBlobError indicating failure. Clients may retry this |
| request, though the server end may abort this cache operation on |
| errors it considers to be fatal.</li> |
| </ul> |
| |
| |
| #### Request {#NeededBlobs.OpenMetaBlob_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>file</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#File'>File</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#NeededBlobs.OpenMetaBlob_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#NeededBlobs_OpenMetaBlob_Result'>NeededBlobs_OpenMetaBlob_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ## PackageCache {#PackageCache} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=14)* |
| |
| <p>This manages the system package cache.</p> |
| <p>This is intended to be implemented by the package manager component and used by |
| package resolver components.</p> |
| |
| |
| ### BasePackageIndex {#PackageCache.BasePackageIndex} |
| |
| <p>Retrieves a chunk iterator to the base package index.</p> |
| <ul> |
| <li>request <code>iterator</code> a request for the <code>PackageIndexIterator</code> that will return sets of |
| <code>PackageIndexEntry</code> objects until all packages in the base index have been iterated.</li> |
| </ul> |
| |
| |
| #### Request {#PackageCache.BasePackageIndex_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>iterator</code></td> |
| <td> |
| <code>request<<a class='link' href='#PackageIndexIterator'>PackageIndexIterator</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| |
| ### Get {#PackageCache.Get} |
| |
| <p>Gets the package directory if it is present on the local system. If it is not, the |
| <code>missing_blobs</code> 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 <code>dir</code> directory will be resolved. This method |
| will return successfully when the package has been fully resolved, or return an error if |
| the client closes <code>needed_blobs</code> or <code>dir</code> handle before the package has been resolved.</p> |
| <p>This method does not guarantee the missing blobs have been persisted. In order to guarantee |
| missing blobs are persisted, clients should call ['Sync'].</p> |
| <ul> |
| <li>request <code>meta_far_blob</code> the blob info for the package's meta.far.</li> |
| <li>request <code>selectors</code> the package selectors (TODO: link to docs).</li> |
| <li>request <code>needed_blobs</code> an iterator over all the blobs in the package that |
| are not present on the system.</li> |
| <li>request <code>dir</code> an optional request for a directory that will be resolved when the package |
| has been successfully cached.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_UNAVAILABLE</code> if the client closed <code>needed_blobs</code> handles before |
| all the missing blobs were downloaded to the system.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#PackageCache.Get_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>meta_far_blob</code></td> |
| <td> |
| <code><a class='link' href='#BlobInfo'>BlobInfo</a></code> |
| </td> |
| </tr><tr> |
| <td><code>selectors</code></td> |
| <td> |
| <code>vector<string></code> |
| </td> |
| </tr><tr> |
| <td><code>needed_blobs</code></td> |
| <td> |
| <code>request<<a class='link' href='#NeededBlobs'>NeededBlobs</a>></code> |
| </td> |
| </tr><tr> |
| <td><code>dir</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Directory'>Directory</a>>?</code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#PackageCache.Get_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#PackageCache_Get_Result'>PackageCache_Get_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### Open {#PackageCache.Open} |
| |
| <p>Opens the package, or errors out if it is not present on the local system.</p> |
| <ul> |
| <li>request <code>meta_far_blob_id</code> the blob id for the package's meta.far.</li> |
| <li>request <code>selectors</code> the package selectors (TODO: link to docs).</li> |
| <li>request <code>dir</code> a request for a directory that will be resolved when the package has been |
| successfully cached.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_NOT_FOUND</code> if the package does not exist.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#PackageCache.Open_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>meta_far_blob_id</code></td> |
| <td> |
| <code><a class='link' href='#BlobId'>BlobId</a></code> |
| </td> |
| </tr><tr> |
| <td><code>selectors</code></td> |
| <td> |
| <code>vector<string></code> |
| </td> |
| </tr><tr> |
| <td><code>dir</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Directory'>Directory</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#PackageCache.Open_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#PackageCache_Open_Result'>PackageCache_Open_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### Sync {#PackageCache.Sync} |
| |
| <p>Synchronizes updates to the cached packages to the underlying persistent storage.</p> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_INTERNAL</code> if the sync fails.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#PackageCache.Sync_Request} |
| <EMPTY> |
| |
| |
| #### Response {#PackageCache.Sync_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#PackageCache_Sync_Result'>PackageCache_Sync_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ## PackageIndexIterator {#PackageIndexIterator} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=196)* |
| |
| <p>A chunk iterator for the package index. This is required because it is possible for the |
| package index to be too large to send over in a single request (over 64KiB).</p> |
| |
| |
| ### Next {#PackageIndexIterator.Next} |
| |
| <p>Returns the next chunk of package index entries. When the iterator is exhausted, |
| this returns an empty vector.</p> |
| <ul> |
| <li>response <code>entries</code> the next chunk of entries in the package index.</li> |
| </ul> |
| |
| |
| #### Request {#PackageIndexIterator.Next_Request} |
| <EMPTY> |
| |
| |
| #### Response {#PackageIndexIterator.Next_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>entries</code></td> |
| <td> |
| <code>vector<<a class='link' href='#PackageIndexEntry'>PackageIndexEntry</a>></code> |
| </td> |
| </tr></table> |
| |
| ## PackageResolver {#PackageResolver} |
| *Defined in [fuchsia.pkg/resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/resolver.fidl;l=48)* |
| |
| <p>This resolves packages from a repository.</p> |
| <p>This is intended to be implemented by package resolver components, and used by |
| repository administration tools.</p> |
| |
| |
| ### GetHash {#PackageResolver.GetHash} |
| |
| <p>Determines the hash of a package.</p> |
| <ul> |
| <li>request <code>package_url</code> the package URL for a package.</li> |
| </ul> |
| <ul> |
| <li>response <code>meta_far_blob_id</code> the hash of the package.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_INTERNAL</code> if the resolver encountered an otherwise unspecified error |
| while handling the request.</li> |
| <li><code>ZX_ERR_NOT_FOUND</code> if the package does not exist in the repository specified by |
| <code>package_url</code>.</li> |
| <li><code>ZX_ERR_BAD_STATE</code> if the resolver does not know about the repository specified by |
| <code>package_url</code>.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#PackageResolver.GetHash_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>package_url</code></td> |
| <td> |
| <code><a class='link' href='#PackageUrl'>PackageUrl</a></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#PackageResolver.GetHash_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#PackageResolver_GetHash_Result'>PackageResolver_GetHash_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### Resolve {#PackageResolver.Resolve} |
| |
| <p>Populates or updates the cache of a package with the given selectors.</p> |
| <p>Ensures that a package is on the local filesystem.</p> |
| <ul> |
| <li>request <code>package_url</code> the package URL for a package. The following link describes |
| the format, resource paths are not allowed: |
| https://fuchsia.dev/fuchsia-src/concepts/packages/package_url.</li> |
| <li>request <code>selectors</code> the package selectors. This feature is unimplemented and the |
| parameter will be ignored.</li> |
| <li>request <code>dir</code> a request for a directory that will be resolved when the package has |
| been successfully cached.</li> |
| </ul> |
| <ul> |
| <li>error indicates failure. See <code>ResolveError</code> for values and error scenarios.</li> |
| </ul> |
| |
| |
| #### Request {#PackageResolver.Resolve_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>package_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| </tr><tr> |
| <td><code>selectors</code></td> |
| <td> |
| <code>vector<string></code> |
| </td> |
| </tr><tr> |
| <td><code>dir</code></td> |
| <td> |
| <code>request<<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Directory'>Directory</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#PackageResolver.Resolve_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#PackageResolver_Resolve_Result'>PackageResolver_Resolve_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ## PackageResolverAdmin {#PackageResolverAdmin} |
| *Defined in [fuchsia.pkg/admin.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/admin.fidl;l=8)* |
| |
| <p>This configures a package resolver.</p> |
| |
| |
| ### SetExperimentState {#PackageResolverAdmin.SetExperimentState} |
| |
| <p>Sets an experiment toggle to a specific state (on or off).</p> |
| <p>Experiment states are not persisted and apply only while the resolver |
| is running.</p> |
| <ul> |
| <li>request <code>experiment_id</code> the experiment to enable or disable.</li> |
| <li>request <code>state</code> the state the experiment should be set to.</li> |
| </ul> |
| |
| |
| #### Request {#PackageResolverAdmin.SetExperimentState_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>experiment_id</code></td> |
| <td> |
| <code><a class='link' href='#ExperimentToggle'>ExperimentToggle</a></code> |
| </td> |
| </tr><tr> |
| <td><code>state</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#PackageResolverAdmin.SetExperimentState_Response} |
| <EMPTY> |
| |
| ## RepositoryIterator {#RepositoryIterator} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=163)* |
| |
| <p>The iterator over all the repositories defined in a <code>PackageResolver</code>.</p> |
| |
| |
| ### Next {#RepositoryIterator.Next} |
| |
| <p>Advances the iterator and returns the next batch of repositories.</p> |
| <ul> |
| <li>response <code>repos</code> a vector of <code>RepositoryConfig</code> repositories. |
| Will return an empty vector when there are no more repositories.</li> |
| </ul> |
| |
| |
| #### Request {#RepositoryIterator.Next_Request} |
| <EMPTY> |
| |
| |
| #### Response {#RepositoryIterator.Next_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>repos</code></td> |
| <td> |
| <code>vector<<a class='link' href='#RepositoryConfig'>RepositoryConfig</a>></code> |
| </td> |
| </tr></table> |
| |
| ## RepositoryManager {#RepositoryManager} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=13)* |
| |
| <p>This manages package repositories.</p> |
| <p>This is intended to be implemented by package resolver components, and used by |
| repository administration tools.</p> |
| |
| |
| ### Add {#RepositoryManager.Add} |
| |
| <p>Adds a repository. This will overwrite the repository if it already exists.</p> |
| <ul> |
| <li>request <code>repo</code> a repository to add to the resolver.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_ACCESS_DENIED</code> if editing repositories is permanently disabled.</li> |
| <li><code>ZX_ERR_ALREADY_EXISTS</code> if the repository already exists.</li> |
| <li><code>ZX_ERR_INVALID_ARGS</code> if the repository is malformed.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#RepositoryManager.Add_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>repo</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryConfig'>RepositoryConfig</a></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#RepositoryManager.Add_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_Add_Result'>RepositoryManager_Add_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### AddMirror {#RepositoryManager.AddMirror} |
| |
| <p>Adds a mirror to a repository. This will overwrite the mirror if it already exists.</p> |
| <ul> |
| <li>request <code>repo_url</code> the URL of the repository to add the mirror to.</li> |
| <li>request <code>mirror</code> the mirror config used to add the mirror.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_ALREADY_EXISTS</code> if the mirror for this repository already exists.</li> |
| <li><code>ZX_ERR_INVALID_ARGS</code> if the <code>repo_url</code> or the <code>mirror</code> is malformed.</li> |
| <li><code>ZX_ERR_NOT_FOUND</code> if the repository does not exist.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#RepositoryManager.AddMirror_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>repo_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| </tr><tr> |
| <td><code>mirror</code></td> |
| <td> |
| <code><a class='link' href='#MirrorConfig'>MirrorConfig</a></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#RepositoryManager.AddMirror_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_AddMirror_Result'>RepositoryManager_AddMirror_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### List {#RepositoryManager.List} |
| |
| <p>Returns an iterator over all repositories.</p> |
| <ul> |
| <li>request <code>iterator</code> a request for an iterator.</li> |
| </ul> |
| |
| |
| #### Request {#RepositoryManager.List_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>iterator</code></td> |
| <td> |
| <code>request<<a class='link' href='#RepositoryIterator'>RepositoryIterator</a>></code> |
| </td> |
| </tr></table> |
| |
| |
| |
| ### Remove {#RepositoryManager.Remove} |
| |
| <p>Removes a repository.</p> |
| <p>Removing a repository will prevent future packages from being cached from this repository, |
| but in-flight downloads may not be interrupted.</p> |
| <ul> |
| <li>request <code>repo_url</code> the URL of the repository we want to remove.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_ACCESS_DENIED</code> if editing repositories is permanently disabled or the |
| <code>repo_url</code> matches a static repository.</li> |
| <li><code>ZX_ERR_INVALID_ARGS</code> if the <code>repo_url</code> is malformed.</li> |
| <li><code>ZX_ERR_NOT_FOUND</code> if the repository does not exist.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#RepositoryManager.Remove_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>repo_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#RepositoryManager.Remove_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_Remove_Result'>RepositoryManager_Remove_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ### RemoveMirror {#RepositoryManager.RemoveMirror} |
| |
| <p>Removes a mirror from a repository.</p> |
| <p>Removing a mirror will prevent future packages from being cached from that mirror, but |
| in-flight downloads may not be interrupted.</p> |
| <ul> |
| <li>request <code>repo_url</code> the URL of the mirror's repository.</li> |
| <li>request <code>mirror_url</code> the URL of the mirror we want to remove.</li> |
| </ul> |
| <ul> |
| <li>error a zx_status value indicating failure. One of the following: |
| <ul> |
| <li><code>ZX_ERR_INVALID_ARGS</code> if the <code>repo_url</code> or the <code>mirror_url</code> is malformed.</li> |
| <li><code>ZX_ERR_NOT_FOUND</code> if the repository or mirror does not exist.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| #### Request {#RepositoryManager.RemoveMirror_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>repo_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| </tr><tr> |
| <td><code>mirror_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#RepositoryManager.RemoveMirror_Response} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_RemoveMirror_Result'>RepositoryManager_RemoveMirror_Result</a></code> |
| </td> |
| </tr></table> |
| |
| ## RetainedPackages {#RetainedPackages} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=217)* |
| |
| <p>Manages the set of retained packages.</p> |
| <p>Retained packages will not be removed from the package cache, even if they |
| aren't fully present. There is only a single set active at once, and the |
| provided APIs for configuring the set atomically replace that set. On boot, |
| the retained package set is always initialized to the empty set. |
| Documentation on <a href="https://fuchsia.dev/fuchsia-src/concepts/packages/garbage_collection">garbage collection</a> contains |
| details on various types of package indexes (static, retained, etc) and |
| describes when a package will be garbage collected or retained.</p> |
| |
| |
| ### Clear {#RetainedPackages.Clear} |
| |
| <p>Atomically clear the retained package set, releasing any previously |
| retained packages.</p> |
| |
| |
| #### Request {#RetainedPackages.Clear_Request} |
| <EMPTY> |
| |
| |
| #### Response {#RetainedPackages.Clear_Response} |
| <EMPTY> |
| |
| ### Replace {#RetainedPackages.Replace} |
| |
| <p>Atomically replace the retained package set with the <a href="https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#package-hash">package hashes</a> |
| provided by the given iterator. |
| Duplicate IDs provided will be merged and processed as a single one.</p> |
| <ul> |
| <li>request <code>iterator</code> an iterator of package blob IDs that should be |
| retained.</li> |
| </ul> |
| |
| |
| #### Request {#RetainedPackages.Replace_Request} |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>iterator</code></td> |
| <td> |
| <code><a class='link' href='#BlobIdIterator'>BlobIdIterator</a></code> |
| </td> |
| </tr></table> |
| |
| |
| #### Response {#RetainedPackages.Replace_Response} |
| <EMPTY> |
| |
| |
| |
| ## **STRUCTS** |
| |
| ### BlobId {#BlobId data-text="BlobId"} |
| *Defined in [fuchsia.pkg/common.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/common.fidl;l=8)* |
| |
| <p>A content-addressed merkle root that describes an artifact that is tracked by the |
| packaging system.</p> |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="BlobId.merkle_root"> |
| <td><code>merkle_root</code></td> |
| <td> |
| <code>uint8[32]</code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### BlobInfo {#BlobInfo data-text="BlobInfo"} |
| *Defined in [fuchsia.pkg/common.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/common.fidl;l=14)* |
| |
| <p>A tuple of the content-addressed merkle root for an artifact, along with that |
| artifact's length in bytes.</p> |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="BlobInfo.blob_id"> |
| <td><code>blob_id</code></td> |
| <td> |
| <code><a class='link' href='#BlobId'>BlobId</a></code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr><tr id="BlobInfo.length"> |
| <td><code>length</code></td> |
| <td> |
| <code>uint64</code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### FontResolver_Resolve_Response {#FontResolver_Resolve_Response data-text="FontResolver_Resolve_Response"} |
| *Defined in [fuchsia.pkg/font_resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/font_resolver.fidl;l=38)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### LocalMirror_GetBlob_Response {#LocalMirror_GetBlob_Response data-text="LocalMirror_GetBlob_Response"} |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=40)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### LocalMirror_GetMetadata_Response {#LocalMirror_GetMetadata_Response data-text="LocalMirror_GetMetadata_Response"} |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=27)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### NeededBlobs_OpenBlob_Response {#NeededBlobs_OpenBlob_Response data-text="NeededBlobs_OpenBlob_Response"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=166)* |
| |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="NeededBlobs_OpenBlob_Response.needed"> |
| <td><code>needed</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### NeededBlobs_OpenMetaBlob_Response {#NeededBlobs_OpenMetaBlob_Response data-text="NeededBlobs_OpenMetaBlob_Response"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=127)* |
| |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="NeededBlobs_OpenMetaBlob_Response.needed"> |
| <td><code>needed</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### PackageCache_Get_Response {#PackageCache_Get_Response data-text="PackageCache_Get_Response"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=39)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### PackageCache_Open_Response {#PackageCache_Open_Response data-text="PackageCache_Open_Response"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=53)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### PackageCache_Sync_Response {#PackageCache_Sync_Response data-text="PackageCache_Sync_Response"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=67)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### PackageIndexEntry {#PackageIndexEntry data-text="PackageIndexEntry"} |
| *Defined in [fuchsia.pkg/common.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/common.fidl;l=32)* |
| |
| <p>A single entry in the package index.</p> |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="PackageIndexEntry.package_url"> |
| <td><code>package_url</code></td> |
| <td> |
| <code><a class='link' href='#PackageUrl'>PackageUrl</a></code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr><tr id="PackageIndexEntry.meta_far_blob_id"> |
| <td><code>meta_far_blob_id</code></td> |
| <td> |
| <code><a class='link' href='#BlobId'>BlobId</a></code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### PackageResolver_GetHash_Response {#PackageResolver_GetHash_Response data-text="PackageResolver_GetHash_Response"} |
| *Defined in [fuchsia.pkg/resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/resolver.fidl;l=81)* |
| |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="PackageResolver_GetHash_Response.meta_far_blob_id"> |
| <td><code>meta_far_blob_id</code></td> |
| <td> |
| <code><a class='link' href='#BlobId'>BlobId</a></code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### PackageResolver_Resolve_Response {#PackageResolver_Resolve_Response data-text="PackageResolver_Resolve_Response"} |
| *Defined in [fuchsia.pkg/resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/resolver.fidl;l=66)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### PackageUrl {#PackageUrl data-text="PackageUrl"} |
| *Defined in [fuchsia.pkg/common.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/common.fidl;l=21)* |
| |
| <p>A fuchsia-pkg:// URL indicating a package. |
| https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#package_identity</p> |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="PackageUrl.url"> |
| <td><code>url</code></td> |
| <td> |
| <code>string[2048]</code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### RepositoryManager_AddMirror_Response {#RepositoryManager_AddMirror_Response data-text="RepositoryManager_AddMirror_Response"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=51)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### RepositoryManager_Add_Response {#RepositoryManager_Add_Response data-text="RepositoryManager_Add_Response"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=23)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### RepositoryManager_RemoveMirror_Response {#RepositoryManager_RemoveMirror_Response data-text="RepositoryManager_RemoveMirror_Response"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=66)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### RepositoryManager_Remove_Response {#RepositoryManager_Remove_Response data-text="RepositoryManager_Remove_Response"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=38)* |
| |
| |
| |
| |
| <EMPTY> |
| |
| ### RepositoryUrl {#RepositoryUrl data-text="RepositoryUrl"} |
| *Defined in [fuchsia.pkg/common.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/common.fidl;l=27)* |
| |
| <p>A fuchsia-pkg:// URL indicating a repository. |
| https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#repository_identity</p> |
| |
| |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr><tr id="RepositoryUrl.url"> |
| <td><code>url</code></td> |
| <td> |
| <code>string[2048]</code> |
| </td> |
| <td> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| |
| |
| ## **ENUMS** |
| |
| ### ExperimentToggle [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#ExperimentToggle} |
| Type: <code>uint64</code> |
| |
| *Defined in [fuchsia.pkg/admin.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/admin.fidl;l=23)* |
| |
| <p>List of known experiment toggles.</p> |
| |
| |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="ExperimentToggle.LIGHTBULB"> |
| <td><code>LIGHTBULB</code></td> |
| <td><code>0</code></td> |
| <td><p>This does nothing, but is visible in inspect.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### GetBlobError [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#GetBlobError} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=51)* |
| |
| <p>Error type for <a class='link' href='../fuchsia.pkg/'>fuchsia.pkg</a>/<a class='link' href='../fuchsia.pkg/#LocalMirror.GetBlob'>LocalMirror.GetBlob</a>.</p> |
| |
| |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="GetBlobError.ERROR_OPENING_BLOB"> |
| <td><code>ERROR_OPENING_BLOB</code></td> |
| <td><code>1</code></td> |
| <td><p>An error occurred when opening the requested blob. This may (though |
| does not necessarily) indicate the blobs directory does not exist.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### GetMetadataError [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#GetMetadataError} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=44)* |
| |
| <p>Error type for <a class='link' href='../fuchsia.pkg/'>fuchsia.pkg</a>/<a class='link' href='../fuchsia.pkg/#LocalMirror.GetMetadata'>LocalMirror.GetMetadata</a>.</p> |
| |
| |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="GetMetadataError.ERROR_OPENING_METADATA"> |
| <td><code>ERROR_OPENING_METADATA</code></td> |
| <td><code>1</code></td> |
| <td><p>An error occurred when opening the requested metadata file. This may (though |
| does not necessarily) indicate the metadata directory does not exist.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### OpenBlobError [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#OpenBlobError} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=71)* |
| |
| <p>Error type for <a class='link' href='#NeededBlobs.OpenMetaBlob'>NeededBlobs.OpenMetaBlob</a> and <a class='link' href='#NeededBlobs.OpenBlob'>NeededBlobs.OpenBlob</a>.</p> |
| |
| |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="OpenBlobError.OUT_OF_SPACE"> |
| <td><code>OUT_OF_SPACE</code></td> |
| <td><code>1</code></td> |
| <td><p>There is insufficient storage space available to persist this blob.</p> |
| |
| </td> |
| </tr><tr id="OpenBlobError.CONCURRENT_WRITE"> |
| <td><code>CONCURRENT_WRITE</code></td> |
| <td><code>2</code></td> |
| <td><p>This blob is already open for write by another cache operation.</p> |
| |
| </td> |
| </tr><tr id="OpenBlobError.UNSPECIFIED_IO"> |
| <td><code>UNSPECIFIED_IO</code></td> |
| <td><code>3</code></td> |
| <td><p>An unspecified error occured during underlying I/O.</p> |
| |
| </td> |
| </tr><tr id="OpenBlobError.INTERNAL"> |
| <td><code>INTERNAL</code></td> |
| <td><code>4</code></td> |
| <td><p>An unspecified error occured.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### RepositoryStorageType [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#RepositoryStorageType} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=134)* |
| |
| <p>Where the repository storage is written to.</p> |
| |
| |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="RepositoryStorageType.EPHEMERAL"> |
| <td><code>EPHEMERAL</code></td> |
| <td><code>1</code></td> |
| <td><p>Ephemeral, or in-memory storage. This repository metadata will be lost |
| when the process or device is restarted. The default type.</p> |
| |
| </td> |
| </tr><tr id="RepositoryStorageType.PERSISTENT"> |
| <td><code>PERSISTENT</code></td> |
| <td><code>2</code></td> |
| <td><p>Persistent, where the repository metadata is written to mutable storage |
| and is available after a reboot.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### ResolveError [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#ResolveError} |
| Type: <code>int32</code> |
| |
| *Defined in [fuchsia.pkg/resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/resolver.fidl;l=11)* |
| |
| <p>Error codes for PackageResolver operations.</p> |
| |
| |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="ResolveError.INTERNAL"> |
| <td><code>INTERNAL</code></td> |
| <td><code>1</code></td> |
| <td><p>The resolver encountered an otherwise unspecified error while handling the request.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.ACCESS_DENIED"> |
| <td><code>ACCESS_DENIED</code></td> |
| <td><code>2</code></td> |
| <td><p>The resolver does not have permission to fetch a package blob.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.IO"> |
| <td><code>IO</code></td> |
| <td><code>3</code></td> |
| <td><p>Some unspecified error during I/O.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.BLOB_NOT_FOUND"> |
| <td><code>BLOB_NOT_FOUND</code></td> |
| <td><code>4</code></td> |
| <td><p>The package blob does not exist.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.PACKAGE_NOT_FOUND"> |
| <td><code>PACKAGE_NOT_FOUND</code></td> |
| <td><code>5</code></td> |
| <td><p>The package does not exist.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.REPO_NOT_FOUND"> |
| <td><code>REPO_NOT_FOUND</code></td> |
| <td><code>6</code></td> |
| <td><p>The resolver does not know about the repo.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.NO_SPACE"> |
| <td><code>NO_SPACE</code></td> |
| <td><code>7</code></td> |
| <td><p>There is no space available to store the package or metadata.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.UNAVAILABLE_BLOB"> |
| <td><code>UNAVAILABLE_BLOB</code></td> |
| <td><code>8</code></td> |
| <td><p>The resolver is currently unable to fetch a package blob.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.UNAVAILABLE_REPO_METADATA"> |
| <td><code>UNAVAILABLE_REPO_METADATA</code></td> |
| <td><code>9</code></td> |
| <td><p>The resolver is currently unable to fetch a repository's metadata.</p> |
| |
| </td> |
| </tr><tr id="ResolveError.INVALID_URL"> |
| <td><code>INVALID_URL</code></td> |
| <td><code>10</code></td> |
| <td><p>The <code>package_url</code> provided to resolver is invalid.</p> |
| |
| </td> |
| </tr></table> |
| |
| |
| |
| ## **TABLES** |
| |
| ### MirrorConfig {#MirrorConfig data-text="MirrorConfig"} |
| |
| |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=145)* |
| |
| <p>The configuration necessary to connect to a mirror.</p> |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="MirrorConfig.mirror_url"> |
| <td>1</td> |
| <td><code>mirror_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| <td><p>The base URL of the TUF metadata on this mirror. Required.</p> |
| |
| </td> |
| </tr><tr id="MirrorConfig.subscribe"> |
| <td>2</td> |
| <td><code>subscribe</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Whether or not to automatically monitor the mirror for updates. Required.</p> |
| |
| </td> |
| </tr><tr id="MirrorConfig."> |
| <td>3</td> |
| <td><code>RESERVED</code></td> |
| <td> |
| <code></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="MirrorConfig.blob_mirror_url"> |
| <td>4</td> |
| <td><code>blob_mirror_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| <td><p>The URL where blobs from this mirror should be fetched. Optional. |
| If absent presumed to be <code>mirror_url + "/blobs"</code>.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### RepositoryConfig {#RepositoryConfig data-text="RepositoryConfig"} |
| |
| |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=77)* |
| |
| <p>The configuration necessary to connect to a repository and its mirrors.</p> |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="RepositoryConfig.repo_url"> |
| <td>1</td> |
| <td><code>repo_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| <td><p>A fuchsia-pkg URL identifying the repository. Required.</p> |
| <p>Example: fuchsia-pkg://example.com/</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.root_keys"> |
| <td>2</td> |
| <td><code>root_keys</code></td> |
| <td> |
| <code>vector<<a class='link' href='#RepositoryKeyConfig'>RepositoryKeyConfig</a>></code> |
| </td> |
| <td><p>A vector of public keys that have signed the initial trusted root |
| metadata. Required.</p> |
| <p>These keys must match one of the trusted keys known to the system.</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.mirrors"> |
| <td>3</td> |
| <td><code>mirrors</code></td> |
| <td> |
| <code>vector<<a class='link' href='#MirrorConfig'>MirrorConfig</a>></code> |
| </td> |
| <td><p>The repository mirrors that serve the package contents. Required.</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.update_package_url"> |
| <td>4</td> |
| <td><code>update_package_url</code></td> |
| <td> |
| <code>string</code> |
| </td> |
| <td><p>The package URL of the system update package. Optional.</p> |
| <p>Only used for the fuchsia-pkg://fuchsia.com/ repo.</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.root_version"> |
| <td>5</td> |
| <td><code>root_version</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>The initial trusted root metadata version. Optional, if absent presumed |
| to be 1.</p> |
| <p>This value describes the initial root metadata version the resolver will |
| fetch to initialize trust, once it's signatures has been verified by the |
| <code>root_keys</code>. It will then walk the chain of N+1, N+2, and etc to the |
| latest version before the resolver fetches any targets.</p> |
| <p>It is recommended that this <code>root_version</code> number and <code>root_keys </code> are |
| kept reasonably in sync with the most recent published version of the |
| root metadata, as that avoids the risk of an old and unused root key |
| being used to compromise resolvers during the trust initialization.</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.root_threshold"> |
| <td>6</td> |
| <td><code>root_threshold</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>The number of <code>root_keys</code> that need to have signed the root metadata for it |
| to be considered trusted. This value must be greater than or equal to 1. |
| Optional, if absent presumed to be 1.</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.use_local_mirror"> |
| <td>7</td> |
| <td><code>use_local_mirror</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Whether the package resolver should check attached storage for blobs and |
| repository metadata. Optional, if absent presumed to be false.</p> |
| |
| </td> |
| </tr><tr id="RepositoryConfig.storage_type"> |
| <td>8</td> |
| <td><code>storage_type</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryStorageType'>RepositoryStorageType</a></code> |
| </td> |
| <td><p>Controls how repository metadata is persisted across reboots. Optional, if absent presumed |
| to be EPHEMERAL.</p> |
| |
| </td> |
| </tr></table> |
| |
| |
| |
| ## **UNIONS** |
| |
| ### FontResolver_Resolve_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#FontResolver_Resolve_Result data-text="FontResolver_Resolve_Result"} |
| *Defined in [fuchsia.pkg/font_resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/font_resolver.fidl;l=38)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="FontResolver_Resolve_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#FontResolver_Resolve_Response'>FontResolver_Resolve_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="FontResolver_Resolve_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### LocalMirror_GetBlob_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#LocalMirror_GetBlob_Result data-text="LocalMirror_GetBlob_Result"} |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=40)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="LocalMirror_GetBlob_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#LocalMirror_GetBlob_Response'>LocalMirror_GetBlob_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="LocalMirror_GetBlob_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#GetBlobError'>GetBlobError</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### LocalMirror_GetMetadata_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#LocalMirror_GetMetadata_Result data-text="LocalMirror_GetMetadata_Result"} |
| *Defined in [fuchsia.pkg/local_mirror.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/local_mirror.fidl;l=27)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="LocalMirror_GetMetadata_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#LocalMirror_GetMetadata_Response'>LocalMirror_GetMetadata_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="LocalMirror_GetMetadata_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#GetMetadataError'>GetMetadataError</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### NeededBlobs_OpenBlob_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#NeededBlobs_OpenBlob_Result data-text="NeededBlobs_OpenBlob_Result"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=166)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="NeededBlobs_OpenBlob_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#NeededBlobs_OpenBlob_Response'>NeededBlobs_OpenBlob_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="NeededBlobs_OpenBlob_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#OpenBlobError'>OpenBlobError</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### NeededBlobs_OpenMetaBlob_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#NeededBlobs_OpenMetaBlob_Result data-text="NeededBlobs_OpenMetaBlob_Result"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=127)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="NeededBlobs_OpenMetaBlob_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#NeededBlobs_OpenMetaBlob_Response'>NeededBlobs_OpenMetaBlob_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="NeededBlobs_OpenMetaBlob_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#OpenBlobError'>OpenBlobError</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### PackageCache_Get_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#PackageCache_Get_Result data-text="PackageCache_Get_Result"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=39)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="PackageCache_Get_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#PackageCache_Get_Response'>PackageCache_Get_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="PackageCache_Get_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### PackageCache_Open_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#PackageCache_Open_Result data-text="PackageCache_Open_Result"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=53)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="PackageCache_Open_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#PackageCache_Open_Response'>PackageCache_Open_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="PackageCache_Open_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### PackageCache_Sync_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#PackageCache_Sync_Result data-text="PackageCache_Sync_Result"} |
| *Defined in [fuchsia.pkg/cache.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/cache.fidl;l=67)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="PackageCache_Sync_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#PackageCache_Sync_Response'>PackageCache_Sync_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="PackageCache_Sync_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### PackageResolver_GetHash_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#PackageResolver_GetHash_Result data-text="PackageResolver_GetHash_Result"} |
| *Defined in [fuchsia.pkg/resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/resolver.fidl;l=81)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="PackageResolver_GetHash_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#PackageResolver_GetHash_Response'>PackageResolver_GetHash_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="PackageResolver_GetHash_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### PackageResolver_Resolve_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#PackageResolver_Resolve_Result data-text="PackageResolver_Resolve_Result"} |
| *Defined in [fuchsia.pkg/resolver.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/resolver.fidl;l=66)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="PackageResolver_Resolve_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#PackageResolver_Resolve_Response'>PackageResolver_Resolve_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="PackageResolver_Resolve_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#ResolveError'>ResolveError</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### RepositoryKeyConfig [flexible](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#RepositoryKeyConfig data-text="RepositoryKeyConfig"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=128)* |
| |
| <p>The keys used by the repository to authenticate its packages.</p> |
| <p>The only supported algorithm at the moment is ed25519.</p> |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="RepositoryKeyConfig.ed25519_key"> |
| <td>1</td> |
| <td><code>ed25519_key</code></td> |
| <td> |
| <code>vector<uint8></code> |
| </td> |
| <td><p>The raw ed25519 public key as binary data.</p> |
| |
| </td> |
| </tr></table> |
| |
| ### RepositoryManager_AddMirror_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#RepositoryManager_AddMirror_Result data-text="RepositoryManager_AddMirror_Result"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=51)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="RepositoryManager_AddMirror_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_AddMirror_Response'>RepositoryManager_AddMirror_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="RepositoryManager_AddMirror_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### RepositoryManager_Add_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#RepositoryManager_Add_Result data-text="RepositoryManager_Add_Result"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=23)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="RepositoryManager_Add_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_Add_Response'>RepositoryManager_Add_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="RepositoryManager_Add_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### RepositoryManager_RemoveMirror_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#RepositoryManager_RemoveMirror_Result data-text="RepositoryManager_RemoveMirror_Result"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=66)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="RepositoryManager_RemoveMirror_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_RemoveMirror_Response'>RepositoryManager_RemoveMirror_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="RepositoryManager_RemoveMirror_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| ### RepositoryManager_Remove_Result [strict](/fuchsia-src/reference/fidl/language/language#strict-vs-flexible){:.fidl-attribute} {#RepositoryManager_Remove_Result data-text="RepositoryManager_Remove_Result"} |
| *Defined in [fuchsia.pkg/repo.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.pkg/repo.fidl;l=38)* |
| |
| |
| |
| <table> |
| <tr><th>Ordinal</th><tr><th>Variant</th><th>Type</th><th>Description</th></tr><tr id="RepositoryManager_Remove_Result.response"> |
| <td>1</td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#RepositoryManager_Remove_Response'>RepositoryManager_Remove_Response</a></code> |
| </td> |
| <td> |
| </td> |
| </tr><tr id="RepositoryManager_Remove_Result.err"> |
| <td>2</td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td> |
| </td> |
| </tr></table> |
| |
| |
| |
| |
| |
| |
| |