flute 1.11.0

File Delivery over Unidirectional Transport (FLUTE)
Documentation
use pyo3::{exceptions::PyTypeError, prelude::*};

#[pyclass]
#[derive(Debug)]
pub struct Config(pub crate::sender::Config);

#[pymethods]
impl Config {
    #[new]
    pub fn new() -> Self {
        Self {
            0: crate::sender::Config {
                ..Default::default()
            },
        }
    }

    #[getter]
    pub fn get_fdt_duration_ms(&self) -> PyResult<u64> {
        Ok(self.0.fdt_duration.as_millis() as u64)
    }

    #[setter]
    pub fn set_fdt_duration_ms(&mut self, value: u64) -> PyResult<()> {
        self.0.fdt_duration = std::time::Duration::from_millis(value);
        Ok(())
    }

    #[getter]
    pub fn get_fdt_start_id(&self) -> PyResult<u32> {
        Ok(self.0.fdt_start_id)
    }

    #[setter]
    pub fn set_fdt_start_id(&mut self, value: u32) -> PyResult<()> {
        self.0.fdt_start_id = value;
        Ok(())
    }

    #[getter]
    pub fn get_fdt_cenc(&self) -> PyResult<u8> {
        Ok(self.0.fdt_cenc as u8)
    }

    #[setter]
    pub fn set_fdt_cenc(&mut self, value: u8) -> PyResult<()> {
        let cenc = match crate::core::lct::Cenc::try_from(value) {
            Ok(res) => res,
            Err(_) => return Err(PyTypeError::new_err("Wrong CENC parameter")),
        };

        self.0.fdt_cenc = cenc;
        Ok(())
    }

    #[getter]
    pub fn get_fdt_inband_sct(&self) -> PyResult<bool> {
        Ok(self.0.fdt_inband_sct)
    }

    #[setter]
    pub fn set_fdt_inband_sct(&mut self, value: bool) -> PyResult<()> {
        self.0.fdt_inband_sct = value;
        Ok(())
    }

    #[getter]
    pub fn get_multiplex_files(&self) -> PyResult<u32> {
        Ok(self.0.priority_queues.get(&0).unwrap().multiplex_files)
    }

    #[setter]
    pub fn set_multiplex_files(&mut self, value: u32) -> PyResult<()> {
        self.0.priority_queues.get_mut(&0).unwrap().multiplex_files = value;
        Ok(())
    }

    #[getter]
    pub fn get_interleave_blocks(&self) -> PyResult<u8> {
        Ok(self.0.interleave_blocks)
    }

    #[setter]
    pub fn set_interleave_blocks(&mut self, value: u8) -> PyResult<()> {
        self.0.interleave_blocks = value;
        Ok(())
    }
}