use malloc_size_of_derive::MallocSizeOf;
const MAX_RECOVERABLE_FAILURES: u32 = 3;
const MAX_WAIT_ATTEMPTS: u32 = 3;
const MAX_PING_BODY_SIZE: usize = 1024 * 1024; const MAX_PENDING_PINGS_DIRECTORY_SIZE: u64 = 10 * 1024 * 1024;
const MAX_PENDING_PINGS_COUNT: u64 = 250;
#[derive(Debug, MallocSizeOf)]
pub struct Policy {
max_recoverable_failures: Option<u32>,
max_wait_attempts: Option<u32>,
max_ping_body_size: Option<usize>,
max_pending_pings_directory_size: Option<u64>,
max_pending_pings_count: Option<u64>,
}
impl Default for Policy {
fn default() -> Self {
Policy {
max_recoverable_failures: Some(MAX_RECOVERABLE_FAILURES),
max_wait_attempts: Some(MAX_WAIT_ATTEMPTS),
max_ping_body_size: Some(MAX_PING_BODY_SIZE),
max_pending_pings_directory_size: Some(MAX_PENDING_PINGS_DIRECTORY_SIZE),
max_pending_pings_count: Some(MAX_PENDING_PINGS_COUNT),
}
}
}
impl Policy {
pub fn max_recoverable_failures(&self) -> u32 {
match &self.max_recoverable_failures {
Some(v) => *v,
None => u32::MAX,
}
}
#[cfg(test)]
pub fn set_max_recoverable_failures(&mut self, v: Option<u32>) {
self.max_recoverable_failures = v;
}
pub fn max_wait_attempts(&self) -> u32 {
match &self.max_wait_attempts {
Some(v) => *v,
None => u32::MAX,
}
}
#[cfg(test)]
pub fn set_max_wait_attempts(&mut self, v: Option<u32>) {
self.max_wait_attempts = v;
}
pub fn max_ping_body_size(&self) -> usize {
match &self.max_ping_body_size {
Some(v) => *v,
None => usize::MAX,
}
}
#[cfg(test)]
pub fn set_max_ping_body_size(&mut self, v: Option<usize>) {
self.max_ping_body_size = v;
}
pub fn max_pending_pings_directory_size(&self) -> u64 {
match &self.max_pending_pings_directory_size {
Some(v) => *v,
None => u64::MAX,
}
}
pub fn max_pending_pings_count(&self) -> u64 {
match &self.max_pending_pings_count {
Some(v) => *v,
None => u64::MAX,
}
}
#[cfg(test)]
pub fn set_max_pending_pings_directory_size(&mut self, v: Option<u64>) {
self.max_pending_pings_directory_size = v;
}
#[cfg(test)]
pub fn set_max_pending_pings_count(&mut self, v: Option<u64>) {
self.max_pending_pings_count = v;
}
}