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}