use super::IO_POLICY;
use crate::MemorySize;
use crate::model::storage::codec::{Nested, product};
use crate::model::storage::{DirectoryCompletion, DirectoryEntry, DirectorySelection};
use crate::operations::{ReplaySafety, Visibility};
product!(ListDirectory { selection: Nested<DirectorySelection> => 1 });
crate::declare!(ListDirectory {
id: "storage.list_directory",
version: 1,
policy: IO_POLICY,
response: DirectoryCompletion,
output: DirectoryEntry,
visibility: Visibility::Shared,
replay: ReplaySafety::Idempotent,
grpc: ("harmos.storage.v1", "Storage", "ListDirectory"),
});
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ListDirectory {
pub selection: DirectorySelection,
}
impl MemorySize for ListDirectory {
fn memory_size(&self) -> usize {
std::mem::size_of::<Self>().saturating_add(self.selection.memory_size().saturating_sub(std::mem::size_of_val(&self.selection)))
}
}