pub mod pool;
pub mod ring;
pub use pool::*;
pub use ring::*;
pub const XS_CAPACITY: usize = 2000; pub const S_CAPACITY: usize = 1000; pub const M_CAPACITY: usize = 300; pub const L_CAPACITY: usize = 60; pub const XL_CAPACITY: usize = 15;
pub const XS_TSHIRT_SIZE: usize = 64;
pub const S_TSHIRT_SIZE: usize = 256;
pub const M_TSHIRT_SIZE: usize = 1024;
pub const L_TSHIRT_SIZE: usize = 4096;
pub const XL_TSHIRT_SIZE: usize = 16384;
#[derive(Debug)]
pub struct RingSource<const TSHIRT_SIZE: usize, const RING_CAPACITY: usize> {
pub writer: Writer<TSHIRT_SIZE, RING_CAPACITY>,
}
impl<const TSHIRT_SIZE: usize, const RING_CAPACITY: usize> RingSource<TSHIRT_SIZE, RING_CAPACITY> {
pub fn new(out_buffer: &'static RingBuffer<TSHIRT_SIZE, RING_CAPACITY>) -> Self {
RingSource {
writer: Writer::new(out_buffer),
}
}
}
#[derive(Debug, Clone)]
pub struct RingSink<const TSHIRT_SIZE: usize, const RING_CAPACITY: usize> {
pub reader: Reader<TSHIRT_SIZE, RING_CAPACITY>,
}
impl<const TSHIRT_SIZE: usize, const RING_CAPACITY: usize> RingSink<TSHIRT_SIZE, RING_CAPACITY> {
pub fn new(in_buffer: &'static RingBuffer<TSHIRT_SIZE, RING_CAPACITY>) -> Self {
RingSink {
reader: Reader::new(in_buffer),
}
}
}
#[derive(Debug)]
pub struct RingPipe<const TSHIRT_SIZE: usize, const RING_CAPACITY: usize> {
pub source: RingSource<TSHIRT_SIZE, RING_CAPACITY>,
pub sink: RingSink<TSHIRT_SIZE, RING_CAPACITY>,
}
impl<const TSHIRT_SIZE: usize, const RING_CAPACITY: usize> RingPipe<TSHIRT_SIZE, RING_CAPACITY> {
pub fn new(
in_buffer: &'static RingBuffer<TSHIRT_SIZE, RING_CAPACITY>,
out_buffer: &'static RingBuffer<TSHIRT_SIZE, RING_CAPACITY>,
) -> Self {
RingPipe {
source: RingSource::new(out_buffer),
sink: RingSink::new(in_buffer),
}
}
}