blob: 47d1637a2abac1b77e3df4f100536009b86f931c [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.pkg;
using fuchsia.io;
/// A collection of TUF repositories contained in an attached storage device.
[Discoverable]
protocol LocalMirror {
/// Obtains and returns a named TUF metadata file from an attached storage
/// device.
///
/// + request `repo_url` the URL of the TUF repository for which to return
/// metadata.
/// + request `path` the path of the metadata file, relative to the
/// repository_metadata directory for the specific TUF repository.
/// + request `metadata` a server end for a TUF metadata file to be opened
/// with `OPEN_RIGHT_READABLE | OPEN_FLAG_DESCRIBE`. If the metadata
/// directory exists but the requested file does not, the client end
/// will receive an OnOpen with `Status::NOT_FOUND`.
/// * error a `GetMetadataError` value
GetMetadata(
RepositoryUrl repo_url,
string:fuchsia.io.MAX_PATH path,
request<fuchsia.io.File> metadata
) -> () error GetMetadataError;
/// Obtains and returns a blob from an attached storage device.
///
/// + request `blob_id` the id of the blob to return.
/// + request `blob` a server end for a blob file to be opened
/// with `OPEN_RIGHT_READABLE | OPEN_FLAG_DESCRIBE`. If the blobs
/// directory exists but the requested file does not, the client end
/// will receive an OnOpen with `Status::NOT_FOUND`.
/// * error a `GetBlobError` value
GetBlob(
BlobId blob_id,
request<fuchsia.io.File> blob
) -> () error GetBlobError;
};
/// Error type for [`fuchsia.pkg/LocalMirror.GetMetadata`].
enum GetMetadataError {
/// An error occurred when opening the requested metadata file. This may (though
/// does not necessarily) indicate the metadata directory does not exist.
ERROR_OPENING_METADATA = 1;
};
/// Error type for [`fuchsia.pkg/LocalMirror.GetBlob`].
enum GetBlobError {
/// An error occurred when opening the requested blob. This may (though
/// does not necessarily) indicate the blobs directory does not exist.
ERROR_OPENING_BLOB = 1;
};