@@ -32,7 +32,7 @@ impl Clone for MockStream {
|
||||
impl MockStream {
|
||||
fn new() -> MockStream {
|
||||
let head = b"HTTP/1.1 200 OK\r\nServer: Mock\r\n\r\n";
|
||||
let mut res = Vec::from_slice(head);
|
||||
let mut res = head.to_vec();
|
||||
res.push_all(README);
|
||||
MockStream {
|
||||
read: MemReader::new(res),
|
||||
|
||||
@@ -59,15 +59,15 @@ impl Clone for Box<NetworkStream + Send> {
|
||||
|
||||
impl Reader for Box<NetworkStream + Send> {
|
||||
#[inline]
|
||||
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> { self.read(buf) }
|
||||
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> { (**self).read(buf) }
|
||||
}
|
||||
|
||||
impl Writer for Box<NetworkStream + Send> {
|
||||
#[inline]
|
||||
fn write(&mut self, msg: &[u8]) -> IoResult<()> { self.write(msg) }
|
||||
fn write(&mut self, msg: &[u8]) -> IoResult<()> { (**self).write(msg) }
|
||||
|
||||
#[inline]
|
||||
fn flush(&mut self) -> IoResult<()> { self.flush() }
|
||||
fn flush(&mut self) -> IoResult<()> { (**self).flush() }
|
||||
}
|
||||
|
||||
/// A `NetworkListener` for `HttpStream`s.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
//! HTTP Server
|
||||
use std::io::{Listener, IoResult, EndOfFile};
|
||||
use std::io::net::ip::{IpAddr, Port, SocketAddr};
|
||||
use std::task::TaskBuilder;
|
||||
|
||||
use intertwine::{Intertwine, Intertwined};
|
||||
use macceptor::MoveAcceptor;
|
||||
@@ -58,6 +59,7 @@ impl<L: NetworkListener<S, A>, S: NetworkStream, A: NetworkAcceptor<S>> Server<L
|
||||
let mut acceptors = Vec::new();
|
||||
let mut sockets = Vec::new();
|
||||
for (ip, port) in self.pairs.into_iter() {
|
||||
debug!("binding to {}:{}", ip, port);
|
||||
let mut listener: L = try_io!(NetworkListener::<S, A>::bind(ip.to_string().as_slice(), port));
|
||||
|
||||
sockets.push(try_io!(listener.socket_name()));
|
||||
@@ -71,7 +73,7 @@ impl<L: NetworkListener<S, A>, S: NetworkStream, A: NetworkAcceptor<S>> Server<L
|
||||
.map(|acceptor| acceptor.move_incoming())
|
||||
.intertwine();
|
||||
|
||||
spawn(proc() {
|
||||
TaskBuilder::new().named("hyper acceptor").spawn(proc() {
|
||||
handler.handle(Incoming { from: connections });
|
||||
});
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ impl Request {
|
||||
/// immediately useful.
|
||||
pub fn new<S: NetworkStream>(mut stream: S) -> HttpResult<Request> {
|
||||
let remote_addr = try_io!(stream.peer_name());
|
||||
debug!("remote addr = {}", remote_addr);
|
||||
let mut stream = BufferedReader::new(stream.abstract());
|
||||
let (method, uri, version) = try!(read_request_line(&mut stream));
|
||||
let headers = try!(Headers::from_raw(&mut stream));
|
||||
|
||||
Reference in New Issue
Block a user