Skip to main content

dope_sys/ring/prepare/
mod.rs

1mod feature;
2
3pub use feature::Feature;
4use o3::base::num::bounded;
5
6type Rejected<S> = (
7    S,
8    Rejection<<S as Prepare>::Cancel, <S as Prepare>::Files, <S as Prepare>::Range>,
9);
10
11/// Admits features and descriptor ranges while retaining every rejected owner.
12pub trait Prepare: Sized {
13    type Cancel;
14    type Files;
15    type Range;
16
17    fn prepare<const FILES: u32, const RANGE: u32>(
18        self,
19        files: bounded::U32<1, FILES>,
20        range: Option<bounded::U32<1, RANGE>>,
21    ) -> Result<Self, Rejected<Self>>;
22}
23
24/// Exact feature or registration failure during ring admission.
25#[derive(Clone, Copy, Debug, Eq, PartialEq)]
26pub enum Rejection<C, F, R> {
27    Feature(Feature),
28    Cancel(C),
29    Files(F),
30    Range(R),
31}