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
use std::boxed::Box;
use std::net::SocketAddr;

use tokio_proto::TcpClient;
use tokio_core::reactor::Handle;
use futures::Future;

use super::protocol::{MemcachedProto};
use super::connection::Connection;
use errors::MemcacheError;

/// TCP Client to `memcached` server
pub struct Client;

impl Client {

    pub fn connect(addr: &SocketAddr, handle: &Handle) -> Box<Future<Item=Connection, Error=MemcacheError>> {
        let result = TcpClient::new(MemcachedProto)
            .connect(addr, handle)
            .map_err(MemcacheError::from)
            .map(|client_service| {
                Connection {
                    inner: client_service,
                }
            });

        Box::new(result)
    }

}