Skip to content

Commit

Permalink
feat(client): add keep_alive_timeout to Client
Browse files Browse the repository at this point in the history
  • Loading branch information
seanmonstar committed Jul 15, 2016
1 parent 02cb96a commit 976218b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
15 changes: 15 additions & 0 deletions src/client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ pub struct Config<C> {
connect_timeout: Duration,
connector: C,
keep_alive: bool,
keep_alive_timeout: Option<Duration>,
//TODO: make use of max_idle config
max_idle: usize,
max_sockets: usize,
}
Expand All @@ -157,6 +159,7 @@ impl<C> Config<C> where C: Connect + Send + 'static {
connect_timeout: self.connect_timeout,
connector: val,
keep_alive: self.keep_alive,
keep_alive_timeout: Some(Duration::from_secs(60 * 2)),
max_idle: self.max_idle,
max_sockets: self.max_sockets,
}
Expand All @@ -171,6 +174,17 @@ impl<C> Config<C> where C: Connect + Send + 'static {
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.
///
/// Default is 1024.
Expand Down Expand Up @@ -202,6 +216,7 @@ impl Default for Config<DefaultConnector> {
connect_timeout: Duration::from_secs(10),
connector: DefaultConnector::default(),
keep_alive: true,
keep_alive_timeout: Some(Duration::from_secs(60 * 2)),
max_idle: 5,
max_sockets: 1024,
}
Expand Down
6 changes: 3 additions & 3 deletions src/server/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl<A: Accept, H: HandlerFactory<A::Output>> fmt::Debug for ServerLoop<A, H> {
pub struct Server<T: Accept> {
listener: T,
keep_alive: bool,
idle_timeout: Duration,
idle_timeout: Option<Duration>,
max_sockets: usize,
}

Expand All @@ -51,7 +51,7 @@ impl<T> Server<T> where T: Accept, T::Output: Transport {
Server {
listener: listener,
keep_alive: true,
idle_timeout: Duration::from_secs(10),
idle_timeout: Some(Duration::from_secs(10)),
max_sockets: 4096,
}
}
Expand All @@ -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.
///
/// 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
}
Expand Down

0 comments on commit 976218b

Please sign in to comment.