Use dynamic dispatch for client Request and Response through Box<NetworkStream>

Also adds a convenience `abstract` method to NetworkStream for creating
Box<NetworkStream + Send> from a NetworkStream.
This commit is contained in:
Jonathan Reem
2014-09-09 16:51:32 -07:00
parent 8026867334
commit ed491655dd
5 changed files with 31 additions and 15 deletions

View File

@@ -37,7 +37,7 @@ impl Request {
/// immediately useful.
pub fn new<S: NetworkStream>(mut stream: S) -> HttpResult<Request> {
let remote_addr = try_io!(stream.peer_name());
let mut stream = BufferedReader::new(box stream as Box<NetworkStream + Send>);
let mut stream = BufferedReader::new(stream.abstract());
let (method, uri, version) = try!(read_request_line(&mut stream));
let mut headers = try!(Headers::from_raw(&mut stream));

View File

@@ -66,7 +66,7 @@ impl Response<Fresh> {
status: status::Ok,
version: version::Http11,
headers: header::Headers::new(),
body: BufferedWriter::new(box stream as Box<NetworkStream + Send>)
body: BufferedWriter::new(stream.abstract())
}
}