flute 1.11.0

File Delivery over Unidirectional Transport (FLUTE)
Documentation
use super::{config, objectwriterbuilder, udpendpoint};
use pyo3::{exceptions::PyTypeError, prelude::*};
use std::time::SystemTime;

#[pyclass(unsendable)]
#[derive(Debug)]
pub struct Receiver(crate::receiver::Receiver);

#[pymethods]
impl Receiver {
    #[new]
    fn new(
        endpoint: &udpendpoint::UDPEndpoint,
        tsi: u64,
        writer: &objectwriterbuilder::ObjectWriterBuilder,
        config: &config::Config,
    ) -> Self {
        let c = config.0.clone();
        Self {
            0: crate::receiver::Receiver::new(&endpoint.inner, tsi, writer.inner.clone(), Some(c)),
        }
    }

    fn push(&mut self, data: &[u8]) -> PyResult<()> {
        self.0
            .push_data(data, SystemTime::now())
            .map_err(|e| PyTypeError::new_err(e.0.to_string()))
    }
}