pub const MAX_MPD_BYTES: usize = broadcast_common::xml_chars::MAX_XML_BYTES;
pub const MAX_XML_DEPTH: usize = broadcast_common::xml_chars::MAX_XML_DEPTH;
pub const MAX_XML_ELEMENTS: usize = broadcast_common::xml_chars::MAX_XML_ELEMENTS;
pub const MAX_ATTRIBUTE_BYTES: usize = broadcast_common::xml_chars::MAX_XML_ATTRIBUTE_BYTES;
pub const MAX_ATTRIBUTES_PER_ELEMENT: usize = broadcast_common::xml_chars::MAX_XML_ATTRIBUTES;
pub const MAX_PERIODS: usize = 1_000;
pub const MAX_ADAPTATION_SETS_PER_PERIOD: usize = 1_000;
pub const MAX_REPRESENTATIONS_PER_SET: usize = 1_000;
pub const MAX_TIMELINE_ENTRIES: usize = 100_000;
pub const MAX_BASE_URLS_PER_LEVEL: usize = 64;
pub const MAX_SEGMENT_URLS: usize = 100_000;
pub const MAX_TIMELINE_SEGMENTS: u64 = 1_000_000;
pub const MAX_BASE_CANDIDATES: usize = 64;
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub struct Limits {
pub max_bytes: usize,
pub max_depth: usize,
pub max_elements: usize,
pub max_attribute_bytes: usize,
pub max_attributes: usize,
pub max_periods: usize,
pub max_adaptation_sets: usize,
pub max_representations: usize,
pub max_timeline_entries: usize,
pub max_base_urls: usize,
pub max_segment_urls: usize,
}
impl Limits {
#[must_use]
pub fn xml_limits(&self) -> broadcast_common::xml_chars::XmlLimits {
let mut xml = broadcast_common::xml_chars::XmlLimits::default();
xml.max_bytes = self.max_bytes;
xml.max_depth = self.max_depth;
xml.max_elements = self.max_elements;
xml.max_attribute_bytes = self.max_attribute_bytes;
xml.max_attributes = self.max_attributes;
xml
}
}
impl Default for Limits {
fn default() -> Self {
Self {
max_bytes: MAX_MPD_BYTES,
max_depth: MAX_XML_DEPTH,
max_elements: MAX_XML_ELEMENTS,
max_attribute_bytes: MAX_ATTRIBUTE_BYTES,
max_attributes: MAX_ATTRIBUTES_PER_ELEMENT,
max_periods: MAX_PERIODS,
max_adaptation_sets: MAX_ADAPTATION_SETS_PER_PERIOD,
max_representations: MAX_REPRESENTATIONS_PER_SET,
max_timeline_entries: MAX_TIMELINE_ENTRIES,
max_base_urls: MAX_BASE_URLS_PER_LEVEL,
max_segment_urls: MAX_SEGMENT_URLS,
}
}
}