Factor out FileManager::read_file().

This commit is contained in:
Ms2ger 2016-11-18 12:54:10 +01:00
parent 508e6adb7e
commit 5ce869d58a
2 changed files with 19 additions and 12 deletions

View file

@ -12,7 +12,7 @@ use mime_classifier::MimeClassifier;
use net_traits::{LoadConsumer, LoadData, Metadata, NetworkError}; use net_traits::{LoadConsumer, LoadData, Metadata, NetworkError};
use net_traits::ProgressMsg::{Done, Payload}; use net_traits::ProgressMsg::{Done, Payload};
use net_traits::blob_url_store::parse_blob_url; use net_traits::blob_url_store::parse_blob_url;
use net_traits::filemanager_thread::{FileManagerThreadMsg, ReadFileProgress}; use net_traits::filemanager_thread::ReadFileProgress;
use net_traits::response::HttpsState; use net_traits::response::HttpsState;
use resource_thread::{send_error, start_sending_sniffed_opt}; use resource_thread::{send_error, start_sending_sniffed_opt};
use resource_thread::CancellationListener; use resource_thread::CancellationListener;
@ -41,8 +41,7 @@ fn load_blob<UI: 'static + UIProvider>
let (chan, recv) = ipc::channel().unwrap(); let (chan, recv) = ipc::channel().unwrap();
if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) { if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) {
let check_url_validity = true; let check_url_validity = true;
let msg = FileManagerThreadMsg::ReadFile(chan, id, check_url_validity, origin); filemanager.read_file(chan, id, check_url_validity, origin, Some(cancel_listener));
let _ = filemanager.handle(msg, Some(cancel_listener));
// Receive first chunk // Receive first chunk
match recv.recv().unwrap() { match recv.recv().unwrap() {
@ -137,8 +136,7 @@ pub fn load_blob_sync<UI: 'static + UIProvider>
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
let check_url_validity = true; let check_url_validity = true;
let msg = FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin); filemanager.read_file(sender, id, check_url_validity, origin, None);
let _ = filemanager.handle(msg, None);
let blob_buf = match receiver.recv().unwrap() { let blob_buf = match receiver.recv().unwrap() {
Ok(ReadFileProgress::Meta(blob_buf)) => blob_buf, Ok(ReadFileProgress::Meta(blob_buf)) => blob_buf,

View file

@ -135,6 +135,21 @@ impl<UI: 'static + UIProvider> FileManager<UI> {
} }
} }
pub fn read_file(&self,
sender: IpcSender<FileManagerResult<ReadFileProgress>>,
id: Uuid,
check_url_validity: bool,
origin: FileOrigin,
cancel_listener: Option<CancellationListener>) {
let store = self.store.clone();
spawn_named("read file".to_owned(), move || {
if let Err(e) = store.try_read_file(&sender, id, check_url_validity,
origin, cancel_listener) {
let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e)));
}
})
}
/// Message handler /// Message handler
pub fn handle(&self, msg: FileManagerThreadMsg, cancel_listener: Option<CancellationListener>) { pub fn handle(&self, msg: FileManagerThreadMsg, cancel_listener: Option<CancellationListener>) {
match msg { match msg {
@ -153,13 +168,7 @@ impl<UI: 'static + UIProvider> FileManager<UI> {
}) })
} }
FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin) => { FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin) => {
let store = self.store.clone(); self.read_file(sender, id, check_url_validity, origin, cancel_listener);
spawn_named("read file".to_owned(), move || {
if let Err(e) = store.try_read_file(&sender, id, check_url_validity,
origin, cancel_listener) {
let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e)));
}
})
} }
FileManagerThreadMsg::PromoteMemory(blob_buf, set_valid, sender, origin) => { FileManagerThreadMsg::PromoteMemory(blob_buf, set_valid, sender, origin) => {
let store = self.store.clone(); let store = self.store.clone();