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
48
49
50
51
52
53
54
55
56
57
//! # Cantal Client
//!
//! [Documentation](https://docs.rs/tk-cantal) |
//! [Github](https://github.com/tailhook/tk-cantal) |
//! [Crate](https://crates.io/crates/tk-cantal)
//!
//! This client is usually used to find out peers known to cantal, i.e. peers
//! of the current cluster.
//!
//! This is **not** a way to submit metrics to cantal. See [`libcantal`] for
//! that.
//!
//! We will expose more APIs, like fetching metrics later.
//!
//! [`libcantal`]: https://crates.io/crates/libcantal
#![warn(missing_docs)]
#![warn(missing_debug_implementations)]
extern crate abstract_ns;
extern crate futures;
extern crate serde;
extern crate serde_json;
extern crate serde_millis;
extern crate tk_http;
extern crate tk_pool;
extern crate tokio_core;
extern crate tokio_io;

#[macro_use] extern crate log;
#[macro_use] extern crate serde_derive;
#[macro_use] extern crate failure;

use std::fmt;

mod connect;
mod peers;
mod response;
mod errors;
mod pool_log;

pub use connect::connect_local;
pub use response::ResponseFuture;
pub use peers::{PeersResponse, Peer};


/// Connection abstraction used to fetch data from the cantal
///
/// Internally this structure contains a connection pool that reconnects
/// when connection is broken.
pub struct Connection {
    pool: connect::Pool,
}

impl fmt::Debug for Connection {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        f.debug_struct("Connection").finish()
    }
}