use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Copy, Clone)]
pub struct NumSctpStreams {
#[serde(rename = "OS")]
pub os: u16,
#[serde(rename = "MIS")]
pub mis: u16,
}
impl Default for NumSctpStreams {
fn default() -> Self {
Self {
os: 1024,
mis: 1024,
}
}
}
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SctpParameters {
pub port: u16,
#[serde(rename = "OS")]
pub os: u16,
#[serde(rename = "MIS")]
pub mis: u16,
pub max_message_size: usize,
}
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SctpStreamParameters {
pub(crate) stream_id: u16,
pub(crate) ordered: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) max_packet_life_time: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) max_retransmits: Option<u16>,
}
impl SctpStreamParameters {
pub fn stream_id(&self) -> u16 {
self.stream_id
}
pub fn ordered(&self) -> bool {
self.ordered
}
pub fn max_packet_life_time(&self) -> Option<u16> {
self.max_packet_life_time
}
pub fn max_retransmits(&self) -> Option<u16> {
self.max_retransmits
}
}
impl SctpStreamParameters {
pub fn new_ordered(stream_id: u16) -> Self {
Self {
stream_id,
ordered: true,
max_packet_life_time: None,
max_retransmits: None,
}
}
pub fn new_unordered_with_life_time(stream_id: u16, max_packet_life_time: u16) -> Self {
Self {
stream_id,
ordered: false,
max_packet_life_time: Some(max_packet_life_time),
max_retransmits: None,
}
}
pub fn new_unordered_with_retransmits(stream_id: u16, max_retransmits: u16) -> Self {
Self {
stream_id,
ordered: false,
max_packet_life_time: None,
max_retransmits: Some(max_retransmits),
}
}
}