@@ -4,10 +4,11 @@ use hyper::{
44 Request , Response , Uri ,
55} ;
66use std:: time:: Duration ;
7- use tower:: { builder:: ServiceBuilder , reconnect:: Reconnect , Service , ServiceExt } ;
7+ use tower:: { MakeService , Service } ;
8+ use tower:: builder:: ServiceBuilder ;
89use tower_hyper:: {
10+ Body ,
911 client:: { Builder , Connect } ,
10- retry:: { Body , RetryPolicy } ,
1112 util:: Connector ,
1213} ;
1314
@@ -24,40 +25,30 @@ fn request() -> impl Future<Item = Response<hyper::Body>, Error = ()> {
2425 let connector = Connector :: new ( HttpConnector :: new ( 1 ) ) ;
2526 let hyper = Connect :: new ( connector, Builder :: new ( ) ) ;
2627
27- // RetryPolicy is a very simple policy that retries `n` times
28- // if the response has a 500 status code. Here, `n` is 5.
29- let policy = RetryPolicy :: new ( 5 ) ;
3028 // We're calling the tower/examples/server.rs.
3129 let dst = Destination :: try_from_uri ( Uri :: from_static ( "http://127.0.0.1:3000" ) ) . unwrap ( ) ;
3230
33- // Now, to build the service! We use two BufferLayers in order to:
34- // - provide backpressure for the RateLimitLayer, and ConcurrencyLimitLayer
35- // - meet `RetryLayer`'s requirement that our service implement `Service + Clone`
36- // - ..and to provide cheap clones on the service.
37- let maker = ServiceBuilder :: new ( )
31+ // Now, to build the service!
32+ let mut maker = ServiceBuilder :: new ( )
3833 . buffer ( 5 )
3934 . rate_limit ( 5 , Duration :: from_secs ( 1 ) )
4035 . concurrency_limit ( 5 )
41- . retry ( policy)
42- . buffer ( 5 )
43- . make_service ( hyper) ;
36+ . service ( hyper) ;
4437
45- // `Reconnect` accepts a destination and a MakeService, creating a new service
46- // any time the connection encounters an error.
47- let client = Reconnect :: new ( maker , dst ) ;
38+ let client = maker
39+ . make_service ( dst )
40+ . map_err ( |err| eprintln ! ( "Connect Error {:?}" , err ) ) ;
4841
4942 let request = Request :: builder ( )
5043 . method ( "GET" )
51- . body ( Body :: from ( Vec :: new ( ) ) )
44+ . body ( Vec :: new ( ) )
5245 . unwrap ( ) ;
5346
54- // we check to see if the client is ready to accept requests.
5547 client
56- . ready ( )
5748 . map_err ( |e| panic ! ( "Service is not ready: {:?}" , e) )
5849 . and_then ( |mut c| {
5950 c. call ( request)
60- . map ( |res| res. map ( |b| b . into_inner ( ) ) )
51+ . map ( |res| res. map ( Body :: into_inner) )
6152 . map_err ( |e| panic ! ( "{:?}" , e) )
6253 } )
6354}
0 commit comments