Skip to main content

PaverServerHandler

Trait PaverServerHandler 

Source
pub trait PaverServerHandler<___T: Transport = Channel> {
    // Required methods
    fn find_data_sink(
        &mut self,
        request: Request<FindDataSink, ___T>,
    ) -> impl Future<Output = ()> + Send;
    fn open_partition_io(
        &mut self,
        request: Request<OpenPartitionIo, ___T>,
    ) -> impl Future<Output = ()> + Send;
    fn find_partition_table_manager(
        &mut self,
        request: Request<FindPartitionTableManager, ___T>,
    ) -> impl Future<Output = ()> + Send;
    fn find_boot_manager(
        &mut self,
        request: Request<FindBootManager, ___T>,
    ) -> impl Future<Output = ()> + Send;
    fn find_sysconfig(
        &mut self,
        request: Request<FindSysconfig, ___T>,
    ) -> impl Future<Output = ()> + Send;
}
Expand description

A server handler for the Paver protocol.

See Paver for more details.

Required Methods§

Source

fn find_data_sink( &mut self, request: Request<FindDataSink, ___T>, ) -> impl Future<Output = ()> + Send

Attempts to auto-discover the data sink where assets and volumes will get paved to. On devices with GPT, the partition must have a valid FVM partition in order for auto-discovery to find it. If multiple devices are found suitable, error is returned.

data_sink will be closed on error, with an epitaph provided on failure reason.

Source

fn open_partition_io( &mut self, request: Request<OpenPartitionIo, ___T>, ) -> impl Future<Output = ()> + Send

Opens a PartitionIo session backed by block devices in the caller-provided block_dir.

Under the capability-delegated permission model, the paver component does not hold ambient access to all system block partitions. Instead, the caller (such as system-updater or fastboot) is responsible for routing the required block device capabilities into its own namespace (for example, via a scoped /block or /block/ota directory exposed by fshost) and passing block_dir to the paver for the duration of the PartitionIo session.

block_dir is expected to follow the fshost /block directory layout (see https://fuchsia.dev/fuchsia-src/development/storage/storage-partition-routing): each entry <entry>/ is a subdirectory containing a fuchsia.storage.block.Block protocol node at <entry>/fuchsia.storage.block.Block.

partition_io will be closed on error, with an epitaph provided on failure reason.

Source

fn find_partition_table_manager( &mut self, request: Request<FindPartitionTableManager, ___T>, ) -> impl Future<Output = ()> + Send

Like FindDataSink, but the returned block device will be dynamic, supporting partition table manipulation.

data_sink will be closed on error, with an epitaph provided on failure reason.

Source

fn find_boot_manager( &mut self, request: Request<FindBootManager, ___T>, ) -> impl Future<Output = ()> + Send

Attempts to auto-discover the boot manager.

boot_manager will be closed on error, with an epitaph provided on failure reason. ZX_ERR_NOT_SUPPORTED indicates lack of support and configuration A is always booted from.

Source

fn find_sysconfig( &mut self, request: Request<FindSysconfig, ___T>, ) -> impl Future<Output = ()> + Send

Find Sysconfig service.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§