use crate::codec::MAX_FRAME_SIZE;
use std::cmp;
#[derive(Debug, Clone)]
pub struct MplexConfig {
pub(crate) max_substreams: usize,
pub(crate) max_buffer_len: usize,
pub(crate) max_buffer_behaviour: MaxBufferBehaviour,
pub(crate) split_send_size: usize,
}
impl MplexConfig {
pub fn new() -> MplexConfig {
Default::default()
}
pub fn set_max_num_streams(&mut self, max: usize) -> &mut Self {
self.max_substreams = max;
self
}
pub fn set_max_buffer_size(&mut self, max: usize) -> &mut Self {
self.max_buffer_len = max;
self
}
pub fn set_max_buffer_behaviour(&mut self, behaviour: MaxBufferBehaviour) -> &mut Self {
self.max_buffer_behaviour = behaviour;
self
}
pub fn set_split_send_size(&mut self, size: usize) -> &mut Self {
let size = cmp::min(size, MAX_FRAME_SIZE);
self.split_send_size = size;
self
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum MaxBufferBehaviour {
ResetStream,
Block,
}
impl Default for MplexConfig {
fn default() -> MplexConfig {
MplexConfig {
max_substreams: 128,
max_buffer_len: 32,
max_buffer_behaviour: MaxBufferBehaviour::Block,
split_send_size: 8 * 1024,
}
}
}