use dope_core::driver::route::Identity;
use dope_net::link::egress;
use egress::{load::Value, reserve::error};
use crate::client::conn;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Plan {
Lanes {
actual: usize,
minimum: usize,
maximum: usize,
},
Entries {
actual: u32,
minimum: u32,
},
}
#[must_use]
pub enum Enqueue<B> {
Unknown(egress::Load<B>),
Inactive(egress::Load<B>),
Rejected(egress::Rejected<Value<B>>),
}
#[must_use]
pub enum Unsent<'d, B, ID: Identity> {
Unknown {
connection: conn::Id<'d, ID>,
load: egress::NonEmpty<B>,
},
Inactive {
connection: conn::Id<'d, ID>,
load: egress::NonEmpty<B>,
},
Capacity {
connection: conn::Id<'d, ID>,
failure: error::Capacity<B>,
},
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[derive(Debug)]
pub enum Open {
Unknown,
Occupied,
Exhausted,
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum Shutdown {
Unknown,
Inactive,
}
const _: () = {
assert!(
std::mem::size_of::<Enqueue<()>>() == std::mem::size_of::<egress::Rejected<Value<()>>>()
);
assert!(std::mem::size_of::<Open>() == 1);
assert!(std::mem::size_of::<Result<(), Open>>() == 1);
assert!(std::mem::size_of::<Shutdown>() == 1);
assert!(std::mem::size_of::<Result<(), Shutdown>>() == 1);
};