guest_emulation_log/
resolver.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4use crate::GuestEmulationLog;
5use get_resources::gel::GuestEmulationLogHandle;
6use std::convert::Infallible;
7use vm_resource::ResolveResource;
8use vm_resource::declare_static_resolver;
9use vm_resource::kind::VmbusDeviceHandleKind;
10use vmbus_channel::resources::ResolveVmbusDeviceHandleParams;
11use vmbus_channel::resources::ResolvedVmbusDevice;
12use vmbus_channel::simple::SimpleDeviceWrapper;
13
14/// Resource resolver for [`GuestEmulationLogHandle`].
15pub struct GuestEmulationLogResolver;
16
17declare_static_resolver!(
18    GuestEmulationLogResolver,
19    (VmbusDeviceHandleKind, GuestEmulationLogHandle)
20);
21
22impl ResolveResource<VmbusDeviceHandleKind, GuestEmulationLogHandle> for GuestEmulationLogResolver {
23    type Output = ResolvedVmbusDevice;
24    type Error = Infallible;
25
26    fn resolve(
27        &self,
28        _resource: GuestEmulationLogHandle,
29        input: ResolveVmbusDeviceHandleParams<'_>,
30    ) -> Result<Self::Output, Self::Error> {
31        Ok(SimpleDeviceWrapper::new(input.driver_source.simple(), GuestEmulationLog::new()).into())
32    }
33}