1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! A connection pool implementation for tokio
//!
//! [Documentation](https://docs.rs/tk-pool) |
//! [Github](https://github.com/tailhook/tk-pool) |
//! [Crate](https://crates.io/crates/tk-pool) |
//! [Examples](https://github.com/tailhook/tk-pool/tree/master/examples)
//!
//! A connection pool implementation for tokio. Main features:
//!
//! 1. Works for any request-reply protocol (actually for any `Sink`)
//! 2. Provides both queue and pushback if needed
//! 3. Allows pipelining (multiple in-flight request when multiplexing)
//! 4. Auto-reconnects on broken connection
//! 5. Adapts when DNS name change
//!
//! Multiple load-balancing strategies are in to do list.
//!
//! # Example
//!
//! ```rust,ignore
//!
//! let mut pool =
//!     pool_for(|addr| connect(addr))
//!     .connect_to(ns.subscribe_many(address, default_port))
//!     .lazy_uniform_connections(2)
//!     .with_queue_size(10)
//!     .spawn_on(&core.handle());
//!
//! ```
//!
#[macro_use] extern crate log;
extern crate abstract_ns;
extern crate futures;
extern crate rand;
extern crate tokio_core;
extern crate void;

mod connect;
mod basic;
pub mod queue;
pub mod error_log;
pub mod metrics;
pub mod uniform;
pub mod config;

pub use basic::pool_for;
pub use connect::Connect;