use Buffered Readers and Writers

This commit is contained in:
Sean McArthur
2014-09-02 14:14:56 -07:00
parent 818fac4128
commit b4b539091f
5 changed files with 23 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
//! Client Requests
use std::io::net::tcp::TcpStream;
use std::io::IoResult;
use std::io::{BufferedWriter, IoResult};
use url::Url;
@@ -23,7 +23,7 @@ pub struct Request {
/// The HTTP version of this request.
pub version: version::HttpVersion,
headers_written: bool,
body: TcpStream,
body: BufferedWriter<TcpStream>,
}
impl Request {
@@ -43,6 +43,7 @@ impl Request {
debug!("port={}", port);
let stream = try_io!(TcpStream::connect(host.as_slice(), port));
let stream = BufferedWriter::new(stream);
let mut headers = Headers::new();
headers.set(Host(host));
Ok(Request {
@@ -82,8 +83,9 @@ impl Request {
/// Consumes the Request.
pub fn send(mut self) -> HttpResult<Response> {
try_io!(self.flush());
try_io!(self.body.close_write());
Response::new(self.body)
let mut raw = self.body.unwrap();
try_io!(raw.close_write());
Response::new(raw)
}
}

View File

@@ -1,5 +1,5 @@
//! Client Responses
use std::io::{Reader, IoResult};
use std::io::{BufferedReader, IoResult};
use std::io::net::tcp::TcpStream;
use header::{mod, ContentLength, TransferEncoding, Chunked};
@@ -16,13 +16,14 @@ pub struct Response {
pub headers: header::Headers,
/// The HTTP version of this response from the server.
pub version: version::HttpVersion,
body: HttpReader<TcpStream>,
body: HttpReader<BufferedReader<TcpStream>>,
}
impl Response {
/// Creates a new response from a server.
pub fn new(mut tcp: TcpStream) -> HttpResult<Response> {
pub fn new(tcp: TcpStream) -> HttpResult<Response> {
let mut tcp = BufferedReader::new(tcp);
let (version, status) = try!(read_status_line(&mut tcp));
let mut headers = try!(header::Headers::from_raw(&mut tcp));