mod buffer_pool;
mod pooled_buffer;
mod stats;
#[cfg(test)]
mod tests;
pub use buffer_pool::BufferPool;
pub use pooled_buffer::PooledBuffer;
pub use stats::PoolStats;
use std::collections::VecDeque;
use std::sync::{Arc, Mutex, MutexGuard};
use crate::buffer::PinnedBuffer;
use crate::error::{Result, SaferRingError};
pub(crate) struct PoolInner {
pub(crate) available: VecDeque<PinnedBuffer<[u8]>>,
pub(crate) in_use: usize,
pub(crate) total_allocations: u64,
pub(crate) failed_allocations: u64,
}
impl PoolInner {
pub(crate) fn lock(inner: &Arc<Mutex<PoolInner>>) -> Result<MutexGuard<'_, PoolInner>> {
inner.lock().map_err(|_| SaferRingError::PoolPoisoned)
}
}