disklayer_ram/
resolver.rs1use crate::LazyRamDiskLayer;
7use disk_backend_resources::layer::RamDiskLayerHandle;
8use disk_layered::resolve::ResolveDiskLayerParameters;
9use disk_layered::resolve::ResolvedDiskLayer;
10use vm_resource::ResolveResource;
11use vm_resource::declare_static_resolver;
12use vm_resource::kind::DiskLayerHandleKind;
13
14pub struct RamDiskLayerResolver;
16
17declare_static_resolver!(
18 RamDiskLayerResolver,
19 (DiskLayerHandleKind, RamDiskLayerHandle)
20);
21
22impl ResolveResource<DiskLayerHandleKind, RamDiskLayerHandle> for RamDiskLayerResolver {
23 type Output = ResolvedDiskLayer;
24 type Error = std::convert::Infallible;
25
26 fn resolve(
27 &self,
28 rsrc: RamDiskLayerHandle,
29 _input: ResolveDiskLayerParameters<'_>,
30 ) -> Result<Self::Output, Self::Error> {
31 let mut layer = LazyRamDiskLayer::new();
32 if let Some(len) = rsrc.len {
33 layer = layer.with_len(len);
34 }
35 if let Some(sector_size) = rsrc.sector_size {
36 layer = layer.with_sector_size(sector_size);
37 }
38 Ok(ResolvedDiskLayer::new(layer))
39 }
40}