guest_crash_device/
resolver.rs1use crate::GuestCrashDevice;
7use get_resources::crash::GuestCrashDeviceHandle;
8use std::convert::Infallible;
9use vm_resource::ResolveResource;
10use vm_resource::declare_static_resolver;
11use vm_resource::kind::VmbusDeviceHandleKind;
12use vmbus_channel::resources::ResolveVmbusDeviceHandleParams;
13use vmbus_channel::resources::ResolvedVmbusDevice;
14use vmbus_channel::simple::SimpleDeviceWrapper;
15
16pub struct GuestCrashDeviceResolver;
18
19declare_static_resolver!(
20 GuestCrashDeviceResolver,
21 (VmbusDeviceHandleKind, GuestCrashDeviceHandle)
22);
23
24impl ResolveResource<VmbusDeviceHandleKind, GuestCrashDeviceHandle> for GuestCrashDeviceResolver {
25 type Output = ResolvedVmbusDevice;
26 type Error = Infallible;
27
28 fn resolve(
29 &self,
30 resource: GuestCrashDeviceHandle,
31 input: ResolveVmbusDeviceHandleParams<'_>,
32 ) -> Result<Self::Output, Self::Error> {
33 Ok(SimpleDeviceWrapper::new(
34 input.driver_source.simple(),
35 GuestCrashDevice::new(resource.request_dump, resource.max_dump_size),
36 )
37 .into())
38 }
39}