harmos_domain/operations/storage/
create_file.rs1use super::POLICY;
22use crate::MemorySize;
23use crate::model::storage::codec::{Nested, product};
24use crate::model::storage::{FileMetadata, FileProducer, MutationId};
25use crate::operations::{ReplaySafety, Visibility};
26
27product!(CreateFile {
32 mutation: Nested<MutationId> => 1,
33 metadata: Nested<FileMetadata> => 2,
34});
35
36crate::declare!(CreateFile {
37 id: "storage.create_file",
38 version: 1,
39 policy: POLICY,
40 response: FileProducer,
41 visibility: Visibility::Host,
42 replay: ReplaySafety::Idempotent,
43});
44
45#[derive(Clone, Debug, PartialEq, Eq)]
51pub struct CreateFile {
52 pub mutation: MutationId,
53 pub metadata: FileMetadata,
54}
55
56impl MemorySize for CreateFile {
63 fn memory_size(&self) -> usize {
64 std::mem::size_of::<Self>()
65 .saturating_add(self.mutation.memory_size().saturating_sub(std::mem::size_of_val(&self.mutation)))
66 .saturating_add(self.metadata.memory_size().saturating_sub(std::mem::size_of_val(&self.metadata)))
67 }
68}
69
70