feat(client): add keep_alive_timeout to Client
This commit is contained in:
		| @@ -145,6 +145,8 @@ pub struct Config<C> { | |||||||
|     connect_timeout: Duration, |     connect_timeout: Duration, | ||||||
|     connector: C, |     connector: C, | ||||||
|     keep_alive: bool, |     keep_alive: bool, | ||||||
|  |     keep_alive_timeout: Option<Duration>, | ||||||
|  |     //TODO: make use of max_idle config | ||||||
|     max_idle: usize, |     max_idle: usize, | ||||||
|     max_sockets: usize, |     max_sockets: usize, | ||||||
| } | } | ||||||
| @@ -157,6 +159,7 @@ impl<C> Config<C> where C: Connect + Send + 'static { | |||||||
|             connect_timeout: self.connect_timeout, |             connect_timeout: self.connect_timeout, | ||||||
|             connector: val, |             connector: val, | ||||||
|             keep_alive: self.keep_alive, |             keep_alive: self.keep_alive, | ||||||
|  |             keep_alive_timeout: Some(Duration::from_secs(60 * 2)), | ||||||
|             max_idle: self.max_idle, |             max_idle: self.max_idle, | ||||||
|             max_sockets: self.max_sockets, |             max_sockets: self.max_sockets, | ||||||
|         } |         } | ||||||
| @@ -171,6 +174,17 @@ impl<C> Config<C> where C: Connect + Send + 'static { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /// Set an optional timeout for idle sockets being kept-alive. | ||||||
|  |     /// | ||||||
|  |     /// Pass `None` to disable timeout. | ||||||
|  |     /// | ||||||
|  |     /// Default is 2 minutes. | ||||||
|  |     #[inline] | ||||||
|  |     pub fn keep_alive_timeout(mut self, val: Option<Duration>) -> Config<C> { | ||||||
|  |         self.keep_alive_timeout = val; | ||||||
|  |         self | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /// Set the max table size allocated for holding on to live sockets. |     /// Set the max table size allocated for holding on to live sockets. | ||||||
|     /// |     /// | ||||||
|     /// Default is 1024. |     /// Default is 1024. | ||||||
| @@ -202,6 +216,7 @@ impl Default for Config<DefaultConnector> { | |||||||
|             connect_timeout: Duration::from_secs(10), |             connect_timeout: Duration::from_secs(10), | ||||||
|             connector: DefaultConnector::default(), |             connector: DefaultConnector::default(), | ||||||
|             keep_alive: true, |             keep_alive: true, | ||||||
|  |             keep_alive_timeout: Some(Duration::from_secs(60 * 2)), | ||||||
|             max_idle: 5, |             max_idle: 5, | ||||||
|             max_sockets: 1024, |             max_sockets: 1024, | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ impl<A: Accept, H: HandlerFactory<A::Output>> fmt::Debug for ServerLoop<A, H> { | |||||||
| pub struct Server<T: Accept> { | pub struct Server<T: Accept> { | ||||||
|     listener: T, |     listener: T, | ||||||
|     keep_alive: bool, |     keep_alive: bool, | ||||||
|     idle_timeout: Duration, |     idle_timeout: Option<Duration>, | ||||||
|     max_sockets: usize, |     max_sockets: usize, | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -51,7 +51,7 @@ impl<T> Server<T> where T: Accept, T::Output: Transport { | |||||||
|         Server { |         Server { | ||||||
|             listener: listener, |             listener: listener, | ||||||
|             keep_alive: true, |             keep_alive: true, | ||||||
|             idle_timeout: Duration::from_secs(10), |             idle_timeout: Some(Duration::from_secs(10)), | ||||||
|             max_sockets: 4096, |             max_sockets: 4096, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -67,7 +67,7 @@ impl<T> Server<T> where T: Accept, T::Output: Transport { | |||||||
|     /// Sets how long an idle connection will be kept before closing. |     /// Sets how long an idle connection will be kept before closing. | ||||||
|     /// |     /// | ||||||
|     /// Default is 10 seconds. |     /// Default is 10 seconds. | ||||||
|     pub fn idle_timeout(mut self, val: Duration) -> Server<T> { |     pub fn idle_timeout(mut self, val: Option<Duration>) -> Server<T> { | ||||||
|         self.idle_timeout = val; |         self.idle_timeout = val; | ||||||
|         self |         self | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user