diff options
author | Naveen Gattu <naveen.gattu@gmail.com> | 2021-12-05 23:14:49 -0800 |
---|---|---|
committer | Naveen Gattu <naveen.gattu@gmail.com> | 2021-12-23 11:16:24 -0800 |
commit | 903e0cd8570353b0ecef33d094464166869b9eb3 (patch) | |
tree | 809230c62d9cbf6b76f64fb9874ef0e077d02cc2 /components/net/filemanager_thread.rs | |
parent | f77e66bbf8cc295af4a88e8d0734ca001eb0adb3 (diff) | |
download | servo-903e0cd8570353b0ecef33d094464166869b9eb3.tar.gz servo-903e0cd8570353b0ecef33d094464166869b9eb3.zip |
Non-blocking network IO
Diffstat (limited to 'components/net/filemanager_thread.rs')
-rw-r--r-- | components/net/filemanager_thread.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/components/net/filemanager_thread.rs b/components/net/filemanager_thread.rs index 6d9da285154..d56bdd54668 100644 --- a/components/net/filemanager_thread.rs +++ b/components/net/filemanager_thread.rs @@ -4,7 +4,6 @@ use crate::fetch::methods::{CancellationListener, Data, RangeRequestBounds}; use crate::resource_thread::CoreResourceThreadPool; -use crossbeam_channel::Sender; use embedder_traits::{EmbedderMsg, EmbedderProxy, FilterPattern}; use headers::{ContentLength, ContentType, HeaderMap, HeaderMapExt}; use http::header::{self, HeaderValue}; @@ -28,6 +27,7 @@ use std::ops::Index; use std::path::{Path, PathBuf}; use std::sync::atomic::{self, AtomicBool, AtomicUsize, Ordering}; use std::sync::{Arc, Mutex, RwLock, Weak}; +use tokio2::sync::mpsc::UnboundedSender as TokioSender; use url::Url; use uuid::Uuid; @@ -127,7 +127,7 @@ impl FileManager { // in a separate thread. pub fn fetch_file( &self, - done_sender: &Sender<Data>, + done_sender: &mut TokioSender<Data>, cancellation_listener: Arc<Mutex<CancellationListener>>, id: Uuid, file_token: &FileTokenCheck, @@ -210,12 +210,13 @@ impl FileManager { pub fn fetch_file_in_chunks( &self, - done_sender: Sender<Data>, + done_sender: &mut TokioSender<Data>, mut reader: BufReader<File>, res_body: ServoArc<Mutex<ResponseBody>>, cancellation_listener: Arc<Mutex<CancellationListener>>, range: RelativePos, ) { + let done_sender = done_sender.clone(); self.thread_pool .upgrade() .and_then(|pool| { @@ -282,7 +283,7 @@ impl FileManager { fn fetch_blob_buf( &self, - done_sender: &Sender<Data>, + done_sender: &mut TokioSender<Data>, cancellation_listener: Arc<Mutex<CancellationListener>>, id: &Uuid, file_token: &FileTokenCheck, @@ -358,7 +359,7 @@ impl FileManager { ); self.fetch_file_in_chunks( - done_sender.clone(), + &mut done_sender.clone(), reader, response.body.clone(), cancellation_listener, |