diff options
author | metamuffin <metamuffin@disroot.org> | 2023-01-11 23:22:09 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-01-11 23:22:09 +0100 |
commit | c52ee8ef7391a11ddbe64dacc37666eca9128deb (patch) | |
tree | 430ac1d844f6f69fe69b21644d7b7918dffd3a4b /server | |
parent | 43e986b5e626b339095c118fa79ba6cd011aeb9f (diff) | |
download | jellything-c52ee8ef7391a11ddbe64dacc37666eca9128deb.tar jellything-c52ee8ef7391a11ddbe64dacc37666eca9128deb.tar.bz2 jellything-c52ee8ef7391a11ddbe64dacc37666eca9128deb.tar.zst |
it works!
Diffstat (limited to 'server')
-rw-r--r-- | server/src/library.rs | 2 | ||||
-rw-r--r-- | server/src/main.rs | 50 |
2 files changed, 26 insertions, 26 deletions
diff --git a/server/src/library.rs b/server/src/library.rs index 4bded8a..a59635b 100644 --- a/server/src/library.rs +++ b/server/src/library.rs @@ -93,8 +93,6 @@ impl Node { .read_dir()? .filter_map(|e| { let e = e.unwrap(); - eprintln!("{:?}", e.path()); - eprintln!("{:?}", e.path().extension()); if (e.path().extension() == Some(OsStr::new("json")) && e.path().file_name() != Some(OsStr::new("directory.json"))) || e.metadata().unwrap().is_dir() diff --git a/server/src/main.rs b/server/src/main.rs index 3f8d241..5a9c6cf 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -5,10 +5,20 @@ use database::Database; use frontend::pages::{home::page_home, node::page_library_node}; use jellyremuxer::{RemuxerContext, SendWriter}; use library::Library; -use log::debug; -use rocket::{get, http::ContentType, launch, response::stream::ByteStream, routes, State}; +use log::{debug, warn}; +use rocket::{ + get, + http::ContentType, + launch, + response::stream::{ByteStream, ReaderStream}, + routes, State, +}; use std::{fs::read_to_string, sync::Arc}; -use tokio::sync::mpsc; +use tokio::{ + io::{duplex, DuplexStream}, + sync::mpsc, +}; +use tokio_util::io::SyncIoBridge; pub mod database; pub mod frontend; @@ -30,32 +40,24 @@ async fn assets_style() -> (ContentType, String) { fn stream( selection: String, state: &State<AppState>, -) -> Result<(ContentType, ByteStream![Vec<u8>]), MyError> { - let (tx, mut rx) = mpsc::channel(16); +) -> Result<(ContentType, ReaderStream![DuplexStream]), MyError> { + let (a, b) = duplex(8196); let item = state.library.nested("mili-bento-box-bivouac")?.get_item()?; - debug!("generating matroska"); let remuxer = state.remuxer.clone(); + + let b = SyncIoBridge::new(b); tokio::task::spawn_blocking(move || { - remuxer - .generate_into( - SendWriter(tx), - // SyncIoBridge() - item.fs_path.parent().unwrap().to_path_buf(), - item.data.clone(), - selection.split(",").map(|e| e.parse().unwrap()).collect(), - ) - .unwrap(); + if let Err(e) = remuxer.generate_into( + b, + item.fs_path.parent().unwrap().to_path_buf(), + item.data.clone(), + selection.split(",").map(|e| e.parse().unwrap()).collect(), + ) { + warn!("stream stopped: {e}") + } }); debug!("starting stream"); - Ok(( - ContentType::WEBM, - ByteStream! { - while let Some(x) = rx.recv().await { - debug!("yield {x:?}"); - yield x - } - }, - )) + Ok((ContentType::WEBM, ReaderStream::one(a))) } pub struct AppState { |