@@ -4,12 +4,9 @@ use hyper::{
44 Request , Response , Uri ,
55} ;
66use std:: time:: Duration ;
7- use tower:: { builder:: ServiceBuilder , reconnect:: Reconnect , Service , ServiceExt } ;
8- use tower_hyper:: {
9- client:: { Builder , Connect } ,
10- retry:: { Body , RetryPolicy } ,
11- util:: Connector ,
12- } ;
7+ use tower:: { builder:: ServiceBuilder , Service , ServiceExt } ;
8+ use tower_hyper:: { client:: Connect , util:: Connector , Body } ;
9+ use tower_reconnect:: Reconnect ;
1310
1411fn main ( ) {
1512 let fut = futures:: lazy ( || {
@@ -22,29 +19,24 @@ fn main() {
2219
2320fn request ( ) -> impl Future < Item = Response < hyper:: Body > , Error = ( ) > {
2421 let connector = Connector :: new ( HttpConnector :: new ( 1 ) ) ;
25- let hyper = Connect :: new ( connector, Builder :: new ( ) ) ;
22+ let hyper = Connect :: new ( connector) ;
2623
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 ) ;
3024 // We're calling the tower/examples/server.rs.
3125 let dst = Destination :: try_from_uri ( Uri :: from_static ( "http://127.0.0.1:3000" ) ) . unwrap ( ) ;
3226
3327 // Now, to build the service! We use two BufferLayers in order to:
3428 // - provide backpressure for the RateLimitLayer, and ConcurrencyLimitLayer
35- // - meet `RetryLayer`'s requirement that our service implement `Service + Clone`
3629 // - ..and to provide cheap clones on the service.
37- let maker = ServiceBuilder :: new ( )
30+ let service = ServiceBuilder :: new ( )
3831 . buffer ( 5 )
3932 . rate_limit ( 5 , Duration :: from_secs ( 1 ) )
4033 . concurrency_limit ( 5 )
41- . retry ( policy)
4234 . buffer ( 5 )
43- . make_service ( hyper) ;
35+ . service ( hyper) ;
4436
45- // `Reconnect` accepts a destination and a MakeService , creating a new service
37+ // `Reconnect` accepts a destination and a Service , creating a new service
4638 // any time the connection encounters an error.
47- let client = Reconnect :: new ( maker , dst) ;
39+ let client = Reconnect :: new ( service , dst) ;
4840
4941 let request = Request :: builder ( )
5042 . method ( "GET" )
@@ -55,9 +47,5 @@ fn request() -> impl Future<Item = Response<hyper::Body>, Error = ()> {
5547 client
5648 . ready ( )
5749 . map_err ( |e| panic ! ( "Service is not ready: {:?}" , e) )
58- . and_then ( |mut c| {
59- c. call ( request)
60- . map ( |res| res. map ( |b| b. into_inner ( ) ) )
61- . map_err ( |e| panic ! ( "{:?}" , e) )
62- } )
50+ . and_then ( |mut c| c. call ( request) . map_err ( |e| panic ! ( "{:?}" , e) ) )
6351}
0 commit comments