Rework the future Connect trait to only have one method, which takes an Options arg.

This commit is contained in:
Tim Kuehn
2017-01-11 22:26:12 -08:00
parent 568484f14f
commit 05c6be192d
16 changed files with 257 additions and 282 deletions

View File

@@ -3,12 +3,12 @@
// Licensed under the MIT License, <LICENSE or http://opensource.org/licenses/MIT>.
// This file may not be copied, modified, or distributed except according to those terms.
use net2;
use REMOTE;
use bincode::serde::DeserializeError;
use errors::WireError;
use future::REMOTE;
use protocol::Proto;
use futures::{self, Async, Future, Stream};
use net2;
use protocol::Proto;
use serde::{Deserialize, Serialize};
use std::io;
use std::net::SocketAddr;
@@ -50,29 +50,29 @@ pub fn listen_with<S, Req, Resp, E>(addr: SocketAddr,
let addr = listener.local_addr()?;
let handle2 = handle.clone();
let server = listener.incoming().for_each(move |(socket, _)| {
Proto::new().bind_server(&handle2, socket, new_service.new_service()?);
let server = listener.incoming()
.for_each(move |(socket, _)| {
Proto::new().bind_server(&handle2, socket, new_service.new_service()?);
Ok(())
}).map_err(|e| error!("While processing incoming connections: {}", e));
Ok(())
})
.map_err(|e| error!("While processing incoming connections: {}", e));
handle.spawn(server);
Ok(addr)
}
fn listener(addr: &SocketAddr,
handle: &Handle) -> io::Result<TcpListener> {
fn listener(addr: &SocketAddr, handle: &Handle) -> io::Result<TcpListener> {
const PENDING_CONNECTION_BACKLOG: i32 = 1024;
match *addr {
SocketAddr::V4(_) => net2::TcpBuilder::new_v4(),
SocketAddr::V6(_) => net2::TcpBuilder::new_v6()
}?
.reuse_address(true)?
.bind(addr)?
.listen(PENDING_CONNECTION_BACKLOG)
.and_then(|l| {
TcpListener::from_listener(l, addr, handle)
})
SocketAddr::V4(_) => net2::TcpBuilder::new_v4(),
SocketAddr::V6(_) => net2::TcpBuilder::new_v6(),
}
?
.reuse_address(true)?
.bind(addr)?
.listen(PENDING_CONNECTION_BACKLOG)
.and_then(|l| TcpListener::from_listener(l, addr, handle))
}
/// A future that resolves to a `ServerHandle`.