harmos_domain/operations/storage/
finish_file.rs1use super::POLICY;
22use crate::MemorySize;
23use crate::model::storage::codec::{Nested, product};
24use crate::model::storage::{FileReference, FileSession, MutationId};
25use crate::operations::{ReplaySafety, Visibility};
26
27product!(FinishFile {
32 mutation: Nested<MutationId> => 1,
33 session: Nested<FileSession> => 2,
34});
35
36crate::declare!(FinishFile {
37 id: "storage.finish_file",
38 version: 1,
39 policy: POLICY,
40 response: FileReference,
41 visibility: Visibility::Host,
42 replay: ReplaySafety::Idempotent,
43});
44
45#[derive(Clone, Debug, PartialEq, Eq)]
51pub struct FinishFile {
52 pub mutation: MutationId,
53 pub session: FileSession,
54}
55
56impl MemorySize for FinishFile {
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.session.memory_size().saturating_sub(std::mem::size_of_val(&self.session)))
67 }
68}
69
70