use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SctpParameters {
pub port: u16,
pub max_send_message_size: u32,
pub max_receive_message_size: u32,
pub send_buffer_size: u32,
pub per_stream_send_queue_limit: u32,
pub max_receiver_window_buffer_size: u32,
pub is_data_channel: bool,
#[serde(rename = "OS")]
pub os: u16,
#[serde(rename = "MIS")]
pub mis: u16,
pub max_message_size: u32,
}
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SctpNegotiatedCapabilities {
pub negotiated_max_outbound_streams: u16,
pub negotiated_max_inbound_streams: u16,
}
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SctpStreamParameters {
pub stream_id: u16,
pub ordered: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_packet_life_time: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_retransmits: Option<u16>,
}
impl SctpStreamParameters {
#[must_use]
pub fn stream_id(&self) -> u16 {
self.stream_id
}
#[must_use]
pub fn ordered(&self) -> bool {
self.ordered
}
#[must_use]
pub fn max_packet_life_time(&self) -> Option<u16> {
self.max_packet_life_time
}
#[must_use]
pub fn max_retransmits(&self) -> Option<u16> {
self.max_retransmits
}
}
impl SctpStreamParameters {
#[must_use]
pub fn new_ordered(stream_id: u16) -> Self {
Self {
stream_id,
ordered: true,
max_packet_life_time: None,
max_retransmits: None,
}
}
#[must_use]
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,
}
}
#[must_use]
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),
}
}
}