use {
super::errors::MediaError,
bytes::BytesMut,
std::{fs, fs::File, io::Write},
};
pub struct Ts {
ts_number: u32,
live_path: String,
}
impl Ts {
pub fn new(app_name: String, stream_name: String) -> Self {
let live_path = format!("./{app_name}/{stream_name}");
fs::create_dir_all(live_path.clone()).unwrap();
Self {
ts_number: 0,
live_path,
}
}
pub fn write(&mut self, data: BytesMut) -> Result<(String, String), MediaError> {
let ts_file_name = format!("{}.ts", self.ts_number);
let ts_file_path = format!("{}/{}", self.live_path, ts_file_name);
self.ts_number += 1;
let mut ts_file_handler = File::create(ts_file_path.clone())?;
ts_file_handler.write_all(&data[..])?;
Ok((ts_file_name, ts_file_path))
}
pub fn delete(&mut self, ts_file_name: String) {
fs::remove_file(ts_file_name).unwrap();
}
}