naming/
lib.rs

1#[link(name = "naming_srv")]
2extern "C" {}
3
4use naming_core::{api::NamerAPI, handle::NamingHandle, Result};
5pub use naming_core::{dynamic::*, GetFlags, NsNode, NsNodeKind};
6use secgate::util::Descriptor;
7use twizzler_rt_abi::object::ObjID;
8
9pub struct StaticNamingAPI {}
10
11impl NamerAPI for StaticNamingAPI {
12    fn put(&self, desc: Descriptor, name_len: usize, id: ObjID) -> Result<()> {
13        naming_srv::put(desc, name_len, id)
14    }
15
16    fn get(&self, desc: Descriptor, name_len: usize, flags: GetFlags) -> Result<NsNode> {
17        naming_srv::get(desc, name_len, flags)
18    }
19
20    fn open_handle(&self) -> Result<(Descriptor, ObjID)> {
21        naming_srv::open_handle()
22    }
23
24    fn close_handle(&self, desc: Descriptor) -> Result<()> {
25        naming_srv::close_handle(desc)
26    }
27
28    fn enumerate_names(&self, desc: Descriptor, name_len: usize) -> Result<usize> {
29        naming_srv::enumerate_names(desc, name_len)
30    }
31
32    fn enumerate_names_nsid(&self, desc: Descriptor, id: ObjID) -> Result<usize> {
33        naming_srv::enumerate_names_nsid(desc, id)
34    }
35
36    fn remove(&self, desc: Descriptor, name_len: usize) -> Result<()> {
37        naming_srv::remove(desc, name_len)
38    }
39
40    fn change_namespace(&self, desc: Descriptor, name_len: usize) -> Result<()> {
41        naming_srv::change_namespace(desc, name_len)
42    }
43
44    fn mkns(&self, desc: Descriptor, name_len: usize, persist: bool) -> Result<()> {
45        naming_srv::mkns(desc, name_len, persist)
46    }
47
48    fn link(&self, desc: Descriptor, name_len: usize, link_len: usize) -> Result<()> {
49        naming_srv::link(desc, name_len, link_len)
50    }
51}
52
53static STATIC_NAMING_API: StaticNamingAPI = StaticNamingAPI {};
54
55pub type StaticNamingHandle = NamingHandle<'static, StaticNamingAPI>;
56
57pub fn static_naming_factory() -> Option<StaticNamingHandle> {
58    NamingHandle::new(&STATIC_NAMING_API)
59}