dope_sys/ring/register/
mod.rs1use o3::base::num::bounded;
2
3use crate::{
4 io::{Close, reactor::complete},
5 memory,
6 ring::{Access, map},
7};
8mod occupied;
9mod registry;
10mod remove;
11
12pub use occupied::Occupied;
13pub use registry::Registry;
14pub use remove::Remove;
15
16#[derive(Clone, Copy, Debug, Eq, PartialEq)]
18pub struct Unregister;
19
20pub trait Registered: Access + Close {
22 type Entry: complete::Entry<Token = Self::Token>;
23
24 fn acquire(&mut self);
25 fn pop(&mut self) -> Option<Self::Entry>;
26 fn publish(&mut self);
27 fn refresh(&mut self) -> bounded::U32<0, { u32::MAX }>;
28}
29
30pub trait Registration: Sized {
32 type Error: Copy;
33 type Unmap;
34 type Cleanup: memory::Cleanup<Self::Error, Error = map::Failure<Self::Unmap>>;
35
36 fn try_close(self) -> Result<Self::Error, Self::Cleanup>;
37}