harmos_domain/operations/storage/
write_file.rs1use super::IO_POLICY;
22use crate::MemorySize;
23use crate::model::storage::codec::{Nested, product};
24use crate::model::storage::{FileBatch, FileMetadata, FileReference};
25use crate::operations::{ReplaySafety, Visibility};
26
27product!(WriteFile {
32 metadata: Nested<FileMetadata> => 1,
33});
34
35crate::declare!(WriteFile {
36 id: "storage.write_file",
37 version: 1,
38 policy: IO_POLICY,
39 response: FileReference,
40 input: FileBatch,
41 visibility: Visibility::Shared,
42 replay: ReplaySafety::Unknown,
43 grpc: ("harmos.storage.v1", "Storage", "WriteFile"),
44 grant: |request: &WriteFile| Some(crate::plugin::Grant::of("storage.write_file", request.metadata.id.as_str().to_owned(),)),
45});
46
47#[derive(Clone, Debug, PartialEq, Eq)]
53pub struct WriteFile {
54 pub metadata: FileMetadata,
55}
56
57impl MemorySize for WriteFile {
64 fn memory_size(&self) -> usize {
65 std::mem::size_of::<Self>().saturating_add(self.metadata.memory_size().saturating_sub(std::mem::size_of_val(&self.metadata)))
66 }
67}
68
69