Skip to content

Commit 19ba891

Browse files
messenseseanmonstar
authored andcommitted
docs(examples): Update multi_server example to use async await
1 parent 7ff8fcc commit 19ba891

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

examples/multi_server.rs

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,47 @@
1+
#![feature(async_await)]
12
#![deny(warnings)]
23
extern crate hyper;
34
extern crate pretty_env_logger;
45

5-
use hyper::{Body, Response, Server};
6-
use hyper::service::service_fn_ok;
7-
use hyper::rt::{self, Future};
6+
use hyper::{Body, Request, Response, Server};
7+
use hyper::service::{service_fn, make_service_fn};
8+
use futures_util::future::join;
89

910
static INDEX1: &'static [u8] = b"The 1st service!";
1011
static INDEX2: &'static [u8] = b"The 2nd service!";
1112

12-
fn main() {
13+
async fn index1(_: Request<Body>) -> Result<Response<Body>, hyper::Error> {
14+
Ok(Response::new(Body::from(INDEX1)))
15+
}
16+
17+
async fn index2(_: Request<Body>) -> Result<Response<Body>, hyper::Error> {
18+
Ok(Response::new(Body::from(INDEX2)))
19+
}
20+
21+
#[hyper::rt::main]
22+
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
1323
pretty_env_logger::init();
1424

1525
let addr1 = ([127, 0, 0, 1], 1337).into();
1626
let addr2 = ([127, 0, 0, 1], 1338).into();
1727

18-
rt::run(rt::lazy(move || {
19-
let srv1 = Server::bind(&addr1)
20-
.serve(|| service_fn_ok(|_| Response::new(Body::from(INDEX1))))
21-
.map_err(|e| eprintln!("server 1 error: {}", e));
28+
let srv1 = Server::bind(&addr1)
29+
.serve(make_service_fn(|_| {
30+
async {
31+
Ok::<_, hyper::Error>(service_fn(index1))
32+
}
33+
}));
2234

23-
let srv2 = Server::bind(&addr2)
24-
.serve(|| service_fn_ok(|_| Response::new(Body::from(INDEX2))))
25-
.map_err(|e| eprintln!("server 2 error: {}", e));
35+
let srv2 = Server::bind(&addr2)
36+
.serve(make_service_fn(|_| {
37+
async {
38+
Ok::<_, hyper::Error>(service_fn(index2))
39+
}
40+
}));
2641

27-
println!("Listening on http://{} and http://{}", addr1, addr2);
42+
println!("Listening on http://{} and http://{}", addr1, addr2);
2843

29-
rt::spawn(srv1);
30-
rt::spawn(srv2);
44+
let _ret = join(srv1, srv2).await;
3145

32-
Ok(())
33-
}));
46+
Ok(())
3447
}

0 commit comments

Comments
 (0)