Skip to content

Commit 5d7be77

Browse files
committed
feat(server): use SocketAddrs instead of Ipv4Addrs
1 parent c205144 commit 5d7be77

File tree

5 files changed

+12
-16
lines changed

5 files changed

+12
-16
lines changed

benches/server.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ extern crate test;
55

66
use test::Bencher;
77
use std::io::{Read, Write};
8-
use std::net::Ipv4Addr;
98

109
use hyper::method::Method::Get;
1110
use hyper::server::{Request, Response};
@@ -27,7 +26,7 @@ fn hyper_handle(_: Request, res: Response) {
2726
#[bench]
2827
fn bench_hyper(b: &mut Bencher) {
2928
let server = hyper::Server::http(hyper_handle);
30-
let mut listener = server.listen(Ipv4Addr::new(127, 0, 0, 1), 0).unwrap();
29+
let mut listener = server.listen("127.0.0.1").unwrap();
3130

3231
let url = hyper::Url::parse(&*format!("http://{}", listener.socket)).unwrap();
3332
b.iter(|| request(url.clone()));

examples/hello.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ extern crate hyper;
33
extern crate env_logger;
44

55
use std::io::Write;
6-
use std::net::Ipv4Addr;
76
use hyper::server::{Request, Response};
87

98
static PHRASE: &'static [u8] = b"Hello World!";
@@ -17,6 +16,6 @@ fn hello(_: Request, res: Response) {
1716
fn main() {
1817
env_logger::init().unwrap();
1918
let _listening = hyper::Server::http(hello)
20-
.listen(Ipv4Addr::new(127, 0, 0, 1), 3000).unwrap();
19+
.listen("127.0.0.1:3000").unwrap();
2120
println!("Listening on http://127.0.0.1:3000");
2221
}

examples/server.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ extern crate hyper;
33
extern crate env_logger;
44

55
use std::io::{Write, copy};
6-
use std::net::Ipv4Addr;
76

87
use hyper::{Get, Post};
98
use hyper::header::ContentLength;
@@ -52,6 +51,6 @@ fn echo(mut req: Request, mut res: Response) {
5251
fn main() {
5352
env_logger::init().unwrap();
5453
let server = Server::http(echo);
55-
let _guard = server.listen(Ipv4Addr::new(127, 0, 0, 1), 1337).unwrap();
54+
let _guard = server.listen("127.0.0.1:1337").unwrap();
5655
println!("Listening on http://127.0.0.1:1337");
5756
}

src/net.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub trait NetworkListener: Clone {
3838
fn accept(&mut self) -> io::Result<Self::Stream>;
3939

4040
/// Get the address this Listener ended up listening on.
41-
fn socket_addr(&mut self) -> io::Result<SocketAddr>;
41+
fn local_addr(&mut self) -> io::Result<SocketAddr>;
4242

4343
/// Closes the Acceptor, so no more incoming connections will be handled.
4444
// fn close(&mut self) -> io::Result<()>;
@@ -173,12 +173,12 @@ impl Clone for HttpListener {
173173
impl HttpListener {
174174

175175
/// Start listening to an address over HTTP.
176-
pub fn http<To: ToSocketAddrs>(addr: &To) -> io::Result<HttpListener> {
176+
pub fn http<To: ToSocketAddrs>(addr: To) -> io::Result<HttpListener> {
177177
Ok(HttpListener::Http(try!(TcpListener::bind(addr))))
178178
}
179179

180180
/// Start listening to an address over HTTPS.
181-
pub fn https<To: ToSocketAddrs>(addr: &To, cert: &Path, key: &Path) -> io::Result<HttpListener> {
181+
pub fn https<To: ToSocketAddrs>(addr: To, cert: &Path, key: &Path) -> io::Result<HttpListener> {
182182
let mut ssl_context = try!(SslContext::new(Sslv23).map_err(lift_ssl_error));
183183
try_some!(ssl_context.set_cipher_list("DEFAULT").map(lift_ssl_error));
184184
try_some!(ssl_context.set_certificate_file(
@@ -213,7 +213,7 @@ impl NetworkListener for HttpListener {
213213
}
214214

215215
#[inline]
216-
fn socket_addr(&mut self) -> io::Result<SocketAddr> {
216+
fn local_addr(&mut self) -> io::Result<SocketAddr> {
217217
match *self {
218218
HttpListener::Http(ref mut tcp) => tcp.local_addr(),
219219
HttpListener::Https(ref mut tcp, _) => tcp.local_addr(),

src/server/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! HTTP Server
22
use std::io::{BufReader, BufWriter, Write};
33
use std::marker::PhantomData;
4-
use std::net::{Ipv4Addr, SocketAddr};
4+
use std::net::{SocketAddr, ToSocketAddrs};
55
use std::path::Path;
66
use std::thread::{self, JoinGuard};
77

@@ -76,8 +76,7 @@ impl<'a, H: Handler + 'static> Server<'a, H, HttpListener> {
7676

7777
impl<'a, H: Handler + 'static> Server<'a, H, HttpListener> {
7878
/// Binds to a socket, and starts handling connections using a task pool.
79-
pub fn listen_threads(self, ip: Ipv4Addr, port: u16, threads: usize) -> HttpResult<Listening> {
80-
let addr = &(ip, port);
79+
pub fn listen_threads<T: ToSocketAddrs>(self, addr: T, threads: usize) -> HttpResult<Listening> {
8180
let listener = try!(match self.ssl {
8281
Some((cert, key)) => HttpListener::https(addr, cert, key),
8382
None => HttpListener::http(addr)
@@ -86,8 +85,8 @@ impl<'a, H: Handler + 'static> Server<'a, H, HttpListener> {
8685
}
8786

8887
/// Binds to a socket and starts handling connections.
89-
pub fn listen(self, ip: Ipv4Addr, port: u16) -> HttpResult<Listening> {
90-
self.listen_threads(ip, port, num_cpus::get() * 5 / 4)
88+
pub fn listen<T: ToSocketAddrs>(self, addr: T) -> HttpResult<Listening> {
89+
self.listen_threads(addr, num_cpus::get() * 5 / 4)
9190
}
9291
}
9392
impl<
@@ -97,7 +96,7 @@ L: NetworkListener<Stream=S> + Send + 'static,
9796
S: NetworkStream + Clone + Send> Server<'a, H, L> {
9897
/// Creates a new server that will handle `HttpStream`s.
9998
pub fn with_listener(self, mut listener: L, threads: usize) -> HttpResult<Listening> {
100-
let socket = try!(listener.socket_addr());
99+
let socket = try!(listener.local_addr());
101100
let handler = self.handler;
102101

103102
debug!("threads = {:?}", threads);

0 commit comments

Comments
 (0)