refactor(server): remove double nested listen errors in from_tcp
This commit is contained in:
@@ -121,13 +121,10 @@ impl Server<AddrIncoming, ()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Create a new instance from a `std::net::TcpListener` instance.
|
/// Create a new instance from a `std::net::TcpListener` instance.
|
||||||
pub fn from_tcp(
|
pub fn from_tcp(listener: StdTcpListener) -> Result<Builder<AddrIncoming>, ::Error> {
|
||||||
listener: StdTcpListener,
|
|
||||||
) -> Result<Builder<AddrIncoming>, ::Error> {
|
|
||||||
let handle = tokio_reactor::Handle::current();
|
let handle = tokio_reactor::Handle::current();
|
||||||
let incoming = AddrIncoming::from_tcp(listener, &handle)
|
AddrIncoming::from_std(listener, &handle)
|
||||||
.map_err(|err| ::Error::new_listen(err))?;
|
.map(Server::builder)
|
||||||
Ok(Self::builder(incoming))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,29 +22,19 @@ pub struct AddrIncoming {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AddrIncoming {
|
impl AddrIncoming {
|
||||||
pub(super) fn new(addr: &SocketAddr, handle: Option<&Handle>) -> ::Result<AddrIncoming> {
|
pub(super) fn new(addr: &SocketAddr, handle: Option<&Handle>) -> ::Result<Self> {
|
||||||
let listener = if let Some(handle) = handle {
|
|
||||||
let std_listener = StdTcpListener::bind(addr)
|
let std_listener = StdTcpListener::bind(addr)
|
||||||
.map_err(::Error::new_listen)?;
|
.map_err(::Error::new_listen)?;
|
||||||
TcpListener::from_std(std_listener, handle)
|
|
||||||
.map_err(::Error::new_listen)?
|
if let Some(handle) = handle {
|
||||||
|
AddrIncoming::from_std(std_listener, handle)
|
||||||
} else {
|
} else {
|
||||||
TcpListener::bind(addr).map_err(::Error::new_listen)?
|
let handle = Handle::current();
|
||||||
};
|
AddrIncoming::from_std(std_listener, &handle)
|
||||||
|
}
|
||||||
let addr = listener.local_addr().map_err(::Error::new_listen)?;
|
|
||||||
|
|
||||||
Ok(AddrIncoming {
|
|
||||||
addr: addr,
|
|
||||||
listener: listener,
|
|
||||||
sleep_on_errors: true,
|
|
||||||
tcp_keepalive_timeout: None,
|
|
||||||
tcp_nodelay: false,
|
|
||||||
timeout: None,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn from_tcp(std_listener: StdTcpListener, handle: &Handle) -> ::Result<Self>{
|
pub(super) fn from_std(std_listener: StdTcpListener, handle: &Handle) -> ::Result<Self> {
|
||||||
let listener = TcpListener::from_std(std_listener, &handle)
|
let listener = TcpListener::from_std(std_listener, &handle)
|
||||||
.map_err(::Error::new_listen)?;
|
.map_err(::Error::new_listen)?;
|
||||||
let addr = listener.local_addr().map_err(::Error::new_listen)?;
|
let addr = listener.local_addr().map_err(::Error::new_listen)?;
|
||||||
|
|||||||
Reference in New Issue
Block a user