harmos_domain/operations/storage/
watch_directory.rs1use super::IO_POLICY;
20use crate::MemorySize;
21use crate::model::storage::codec::{Flag, Nested, product};
22use crate::model::storage::{DirectoryCompletion, DirectoryEvent, DirectorySelection};
23use crate::operations::{ReplaySafety, Visibility};
24
25product!(WatchDirectory { selection: Nested<DirectorySelection> => 1, include_existing: Flag => 2 });
30crate::declare!(WatchDirectory {
31 id: "storage.watch_directory",
32 version: 1,
33 policy: IO_POLICY,
34 response: DirectoryCompletion,
35 output: DirectoryEvent,
36 visibility: Visibility::Shared,
37 replay: ReplaySafety::Idempotent,
38 grpc: ("harmos.storage.v1", "Storage", "WatchDirectory"),
39});
40
41#[derive(Clone, Debug, PartialEq, Eq)]
46pub struct WatchDirectory {
47 pub selection: DirectorySelection,
48 pub include_existing: bool,
49}
50
51impl MemorySize for WatchDirectory {
58 fn memory_size(&self) -> usize {
59 std::mem::size_of::<Self>().saturating_add(self.selection.memory_size().saturating_sub(std::mem::size_of_val(&self.selection)))
60 }
61}
62
63