2
2
extern crate futures;
3
3
extern crate hyper;
4
4
extern crate pretty_env_logger;
5
- extern crate tokio_core ;
5
+ extern crate tokio ;
6
6
7
7
use futures:: { Future , Stream } ;
8
+ use futures:: future:: lazy;
9
+ use tokio:: reactor:: Handle ;
8
10
9
11
use hyper:: { Body , Chunk , Client , Method , Request , Response , StatusCode } ;
10
12
use hyper:: server:: { Http , Service } ;
@@ -17,13 +19,13 @@ static URL: &str = "http://127.0.0.1:1337/web_api";
17
19
static INDEX : & [ u8 ] = b"<a href=\" test.html\" >test.html</a>" ;
18
20
static LOWERCASE : & [ u8 ] = b"i am a lower case string" ;
19
21
20
- struct ResponseExamples ( tokio_core :: reactor :: Handle ) ;
22
+ struct ResponseExamples ( Handle ) ;
21
23
22
24
impl Service for ResponseExamples {
23
25
type Request = Request < Body > ;
24
26
type Response = Response < Body > ;
25
27
type Error = hyper:: Error ;
26
- type Future = Box < Future < Item = Self :: Response , Error = Self :: Error > > ;
28
+ type Future = Box < Future < Item = Self :: Response , Error = Self :: Error > + Send > ;
27
29
28
30
fn call ( & self , req : Self :: Request ) -> Self :: Future {
29
31
match ( req. method ( ) , req. uri ( ) . path ( ) ) {
@@ -76,18 +78,13 @@ fn main() {
76
78
pretty_env_logger:: init ( ) ;
77
79
let addr = "127.0.0.1:1337" . parse ( ) . unwrap ( ) ;
78
80
79
- let mut core = tokio_core:: reactor:: Core :: new ( ) . unwrap ( ) ;
80
- let handle = core. handle ( ) ;
81
- let client_handle = core. handle ( ) ;
81
+ tokio:: run ( lazy ( move || {
82
+ let handle = Handle :: current ( ) ;
83
+ let serve = Http :: new ( ) . serve_addr ( & addr, move || Ok ( ResponseExamples ( handle. clone ( ) ) ) ) . unwrap ( ) ;
84
+ println ! ( "Listening on http://{} with 1 thread." , serve. incoming_ref( ) . local_addr( ) ) ;
82
85
83
- let serve = Http :: new ( ) . serve_addr_handle ( & addr, & handle, move || Ok ( ResponseExamples ( client_handle. clone ( ) ) ) ) . unwrap ( ) ;
84
- println ! ( "Listening on http://{} with 1 thread." , serve. incoming_ref( ) . local_addr( ) ) ;
85
-
86
- let h2 = handle. clone ( ) ;
87
- handle. spawn ( serve. for_each ( move |conn| {
88
- h2. spawn ( conn. map ( |_| ( ) ) . map_err ( |err| println ! ( "serve error: {:?}" , err) ) ) ;
89
- Ok ( ( ) )
90
- } ) . map_err ( |_| ( ) ) ) ;
91
-
92
- core. run ( futures:: future:: empty :: < ( ) , ( ) > ( ) ) . unwrap ( ) ;
86
+ serve. map_err ( |_| ( ) ) . for_each ( move |conn| {
87
+ tokio:: spawn ( conn. map ( |_| ( ) ) . map_err ( |err| println ! ( "serve error: {:?}" , err) ) )
88
+ } )
89
+ } ) ) ;
93
90
}
0 commit comments