Fist naive attempt to improve streaming
at leat inform executor about blocking call
This commit is contained in:
parent
7820bcf053
commit
1c9aa8ca72
2 changed files with 12 additions and 9 deletions
|
|
@ -170,7 +170,7 @@ impl HttpApi {
|
||||||
let range_header = headers.get(http::header::RANGE);
|
let range_header = headers.get(http::header::RANGE);
|
||||||
trace!(torrent_id=idx, file_id=file_id, range=?range_header, "request for HTTP stream");
|
trace!(torrent_id=idx, file_id=file_id, range=?range_header, "request for HTTP stream");
|
||||||
|
|
||||||
if let Some(range) = headers.get(http::header::RANGE) {
|
if let Some(range) = range_header {
|
||||||
let offset: Option<u64> = range
|
let offset: Option<u64> = range
|
||||||
.to_str()
|
.to_str()
|
||||||
.ok()
|
.ok()
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,10 @@ use anyhow::Context;
|
||||||
use dashmap::DashMap;
|
use dashmap::DashMap;
|
||||||
|
|
||||||
use librqbit_core::lengths::{CurrentPiece, Lengths, ValidPieceIndex};
|
use librqbit_core::lengths::{CurrentPiece, Lengths, ValidPieceIndex};
|
||||||
use tokio::io::{AsyncRead, AsyncSeek};
|
use tokio::{
|
||||||
|
io::{AsyncRead, AsyncSeek},
|
||||||
|
task::block_in_place,
|
||||||
|
};
|
||||||
use tracing::{debug, trace};
|
use tracing::{debug, trace};
|
||||||
|
|
||||||
use crate::{file_info::FileInfo, storage::TorrentStorage, ManagedTorrent};
|
use crate::{file_info::FileInfo, storage::TorrentStorage, ManagedTorrent};
|
||||||
|
|
@ -211,13 +214,13 @@ impl AsyncRead for FileStream {
|
||||||
"will write bytes"
|
"will write bytes"
|
||||||
);
|
);
|
||||||
|
|
||||||
poll_try_io!(poll_try_io!(self.torrent.with_storage_and_file(
|
poll_try_io!(poll_try_io!(block_in_place(|| {
|
||||||
self.file_id,
|
self.torrent
|
||||||
|files, _fi| {
|
.with_storage_and_file(self.file_id, |files, _fi| {
|
||||||
files.pread_exact(self.file_id, self.position, buf)?;
|
files.pread_exact(self.file_id, self.position, buf)?;
|
||||||
Ok::<_, anyhow::Error>(())
|
Ok::<_, anyhow::Error>(())
|
||||||
}
|
})
|
||||||
)));
|
})));
|
||||||
|
|
||||||
self.as_mut().advance(bytes_to_read as u64);
|
self.as_mut().advance(bytes_to_read as u64);
|
||||||
tbuf.advance(bytes_to_read);
|
tbuf.advance(bytes_to_read);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue