use io_uring_bearer::BearerCapacityKind;
use capacity::{Capacity, Setting};
#[derive(Clone, Debug)]
pub(crate) struct TcpPoolCapacity {
pool_count: usize,
}
impl Setting<BearerCapacityKind> for TcpPoolCapacity {
fn setting(&self, v: &BearerCapacityKind) -> usize {
match v {
BearerCapacityKind::CoreQueue => self.pool_count * 3,
BearerCapacityKind::RegisteredFd => self.pool_count,
BearerCapacityKind::PendingCompletions => self.pool_count * 3,
BearerCapacityKind::Buffers => self.pool_count * 3,
BearerCapacityKind::Futexes => 0,
}
}
}
impl TcpPoolCapacity {
pub(crate) fn provide(pool_count: usize) -> Capacity::<TcpPoolCapacity, BearerCapacityKind> {
Capacity::<TcpPoolCapacity, BearerCapacityKind>::with_planned(TcpPoolCapacity { pool_count })
}
}