pub trait Storage {
// Required methods
fn root_node(&self) -> Node;
fn get_version(&self) -> u32;
fn new_node(&mut self) -> Node;
fn get_metadata(&self, node: Node) -> Result<Metadata, Error>;
fn put_metadata(&mut self, node: Node, metadata: Metadata);
fn rm_metadata(&mut self, node: Node);
fn get_direntry(
&self,
node: Node,
index: DirEntryIndex
) -> Result<DirEntry, Error>;
fn put_direntry(
&mut self,
node: Node,
index: DirEntryIndex,
entry: DirEntry
);
fn rm_direntry(&mut self, node: Node, index: DirEntryIndex);
fn read_filechunk(
&self,
node: Node,
index: FileChunkIndex,
offset: FileSize,
buf: &mut [u8]
) -> Result<(), Error>;
fn write_filechunk(
&mut self,
node: Node,
index: FileChunkIndex,
offset: FileSize,
buf: &[u8]
);
fn rm_filechunk(&mut self, node: Node, index: FileChunkIndex);
}