1#![forbid(unsafe_code)]
7
8use mesh::MeshPayload;
9use vm_resource::Resource;
10use vm_resource::ResourceId;
11use vm_resource::kind::DiskHandleKind;
12use vm_resource::kind::NonVolatileStoreKind;
13use vmgs_format::FileId;
14
15#[derive(MeshPayload)]
17pub struct VmgsFileHandle {
18 pub file_id: u32,
22 pub encrypted: bool,
24}
25
26impl VmgsFileHandle {
27 pub fn new(file_id: FileId, encrypted: bool) -> Self {
29 Self {
30 file_id: file_id.0,
31 encrypted,
32 }
33 }
34}
35
36impl ResourceId<NonVolatileStoreKind> for VmgsFileHandle {
37 const ID: &'static str = "vmgs";
38}
39
40#[derive(MeshPayload, Debug)]
42pub enum VmgsResource {
43 Disk(Resource<DiskHandleKind>),
45 ReprovisionOnFailure(Resource<DiskHandleKind>),
47 Reprovision(Resource<DiskHandleKind>),
49 Ephemeral,
51}