naming_core/
api.rs

1use secgate::util::Descriptor;
2use twizzler_rt_abi::object::ObjID;
3
4use crate::{GetFlags, NsNode, Result};
5
6// maybe this can be a macro or it's just bad design :(
7pub trait NamerAPI {
8    fn put(&self, desc: Descriptor, name_len: usize, id: ObjID) -> Result<()>;
9    fn mkns(&self, desc: Descriptor, name_len: usize, persist: bool) -> Result<()>;
10    fn link(&self, desc: Descriptor, name_len: usize, link_name: usize) -> Result<()>;
11    fn get(&self, desc: Descriptor, name_len: usize, flags: GetFlags) -> Result<NsNode>;
12    fn open_handle(&self) -> Result<(Descriptor, ObjID)>;
13    fn close_handle(&self, desc: Descriptor) -> Result<()>;
14    fn enumerate_names(
15        &self,
16        desc: Descriptor,
17        name_len: usize,
18        skip: usize,
19        count: usize,
20    ) -> Result<usize>;
21    fn enumerate_names_nsid(
22        &self,
23        desc: Descriptor,
24        id: ObjID,
25        skip: usize,
26        count: usize,
27    ) -> Result<usize>;
28    fn remove(&self, desc: Descriptor, name_len: usize) -> Result<()>;
29    fn rename(&self, desc: Descriptor, old_len: usize, new_len: usize) -> Result<()>;
30    fn change_namespace(&self, desc: Descriptor, name_len: usize) -> Result<()>;
31}