Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify the http_loader code. #14362

Merged
merged 14 commits into from Nov 26, 2016

Unify ReadResult and Data.

  • Loading branch information
Ms2ger committed Nov 24, 2016
commit 675d8f518c1f730b85d79e029261bac2ce286fcd
@@ -9,7 +9,7 @@ use devtools_traits::DevtoolsControlMsg;
use fetch::cors_cache::CorsCache;
use filemanager_thread::FileManager;
use http_loader::{HttpState, set_default_accept_encoding, set_default_accept_language, set_request_cookies};
use http_loader::{NetworkHttpRequestFactory, ReadResult, StreamedResponse, obtain_response, read_block};
use http_loader::{NetworkHttpRequestFactory, StreamedResponse, obtain_response, read_block};
use http_loader::{auth_from_cache, determine_request_referrer, set_cookies_from_headers};
use http_loader::{send_response_to_devtools, send_request_to_devtools, LoadErrorType};
use hyper::header::{Accept, AcceptLanguage, Authorization, AccessControlAllowCredentials};
@@ -46,7 +46,7 @@ use uuid;

pub type Target = Option<Box<FetchTaskTarget + Send>>;

enum Data {
pub enum Data {
Payload(Vec<u8>),
Done,
}
@@ -1061,15 +1061,15 @@ fn http_network_fetch(request: Rc<Request>,

loop {
match read_block(&mut res) {
Ok(ReadResult::Payload(chunk)) => {
Ok(Data::Payload(chunk)) => {
if let ResponseBody::Receiving(ref mut body) = *res_body.lock().unwrap() {
body.extend_from_slice(&chunk);
if let Some(ref sender) = done_sender {
let _ = sender.send(Data::Payload(chunk));
}
}
},
Ok(ReadResult::EOF) | Err(_) => {
Ok(Data::Done) | Err(_) => {
let mut empty_vec = Vec::new();
let completed_body = match *res_body.lock().unwrap() {
ResponseBody::Receiving(ref mut body) => {
@@ -9,6 +9,7 @@ use cookie;
use cookie_storage::CookieStorage;
use devtools_traits::{ChromeToDevtoolsControlMsg, DevtoolsControlMsg, HttpRequest as DevtoolsHttpRequest};
use devtools_traits::{HttpResponse as DevtoolsHttpResponse, NetworkEvent};
use fetch::methods::Data;
use flate2::read::{DeflateDecoder, GzDecoder};
use hsts::HstsList;
use hyper::Error as HttpError;
@@ -38,20 +39,15 @@ use time;
use time::Tm;
use url::Origin as UrlOrigin;

pub enum ReadResult {
Payload(Vec<u8>),
EOF,
}

pub fn read_block<R: Read>(reader: &mut R) -> Result<ReadResult, ()> {
pub fn read_block<R: Read>(reader: &mut R) -> Result<Data, ()> {
let mut buf = vec![0; 1024];

match reader.read(&mut buf) {
Ok(len) if len > 0 => {
buf.truncate(len);
Ok(ReadResult::Payload(buf))
Ok(Data::Payload(buf))
}
Ok(_) => Ok(ReadResult::EOF),
Ok(_) => Ok(Data::Done),
Err(_) => Err(()),
}
}
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.