mirror of https://github.com/fafhrd91/actix-net
Merge branch 'master' into refactor/simplify_server_future
This commit is contained in:
commit
73fc384514
|
@ -7,7 +7,7 @@ use slab::Slab;
|
||||||
|
|
||||||
use crate::builder::ServerBuilder;
|
use crate::builder::ServerBuilder;
|
||||||
use crate::server::ServerHandle;
|
use crate::server::ServerHandle;
|
||||||
use crate::socket::{MioListener, SocketAddr};
|
use crate::socket::MioListener;
|
||||||
use crate::waker_queue::{WakerInterest, WakerQueue, WAKER_TOKEN};
|
use crate::waker_queue::{WakerInterest, WakerQueue, WAKER_TOKEN};
|
||||||
use crate::worker::{
|
use crate::worker::{
|
||||||
Conn, ServerWorker, WorkerAvailability, WorkerHandleAccept, WorkerHandleServer,
|
Conn, ServerWorker, WorkerAvailability, WorkerHandleAccept, WorkerHandleServer,
|
||||||
|
@ -17,9 +17,6 @@ use crate::Token;
|
||||||
const DUR_ON_ERR: Duration = Duration::from_millis(500);
|
const DUR_ON_ERR: Duration = Duration::from_millis(500);
|
||||||
|
|
||||||
struct ServerSocketInfo {
|
struct ServerSocketInfo {
|
||||||
/// Address of socket. Mainly used for logging.
|
|
||||||
addr: SocketAddr,
|
|
||||||
|
|
||||||
/// Beware this is the crate token for identify socket and should not be confused
|
/// Beware this is the crate token for identify socket and should not be confused
|
||||||
/// with `mio::Token`.
|
/// with `mio::Token`.
|
||||||
token: Token,
|
token: Token,
|
||||||
|
@ -154,8 +151,6 @@ impl Accept {
|
||||||
) -> io::Result<(Accept, Slab<ServerSocketInfo>)> {
|
) -> io::Result<(Accept, Slab<ServerSocketInfo>)> {
|
||||||
let mut sockets = Slab::new();
|
let mut sockets = Slab::new();
|
||||||
for (hnd_token, mut lst) in socks.into_iter() {
|
for (hnd_token, mut lst) in socks.into_iter() {
|
||||||
let addr = lst.local_addr();
|
|
||||||
|
|
||||||
let entry = sockets.vacant_entry();
|
let entry = sockets.vacant_entry();
|
||||||
let token = entry.key();
|
let token = entry.key();
|
||||||
|
|
||||||
|
@ -164,7 +159,6 @@ impl Accept {
|
||||||
.register(&mut lst, MioToken(token), Interest::READABLE)?;
|
.register(&mut lst, MioToken(token), Interest::READABLE)?;
|
||||||
|
|
||||||
entry.insert(ServerSocketInfo {
|
entry.insert(ServerSocketInfo {
|
||||||
addr,
|
|
||||||
token: hnd_token,
|
token: hnd_token,
|
||||||
lst,
|
lst,
|
||||||
timeout_deadline: None,
|
timeout_deadline: None,
|
||||||
|
@ -339,14 +333,14 @@ impl Accept {
|
||||||
|
|
||||||
fn register_logged(&self, token: usize, info: &mut ServerSocketInfo) {
|
fn register_logged(&self, token: usize, info: &mut ServerSocketInfo) {
|
||||||
match self.register(token, info) {
|
match self.register(token, info) {
|
||||||
Ok(_) => info!("Resume accepting connections on {}", info.addr),
|
Ok(_) => info!("Resume accepting connections on {}", info.lst.local_addr()),
|
||||||
Err(e) => error!("Can not register server socket {}", e),
|
Err(e) => error!("Can not register server socket {}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deregister_logged(&self, info: &mut ServerSocketInfo) {
|
fn deregister_logged(&self, info: &mut ServerSocketInfo) {
|
||||||
match self.poll.registry().deregister(&mut info.lst) {
|
match self.poll.registry().deregister(&mut info.lst) {
|
||||||
Ok(_) => info!("Paused accepting connections on {}", info.addr),
|
Ok(_) => info!("Paused accepting connections on {}", info.lst.local_addr()),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Can not deregister server socket {}", e)
|
error!("Can not deregister server socket {}", e)
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,15 @@ pub(crate) enum MioListener {
|
||||||
impl MioListener {
|
impl MioListener {
|
||||||
pub(crate) fn local_addr(&self) -> SocketAddr {
|
pub(crate) fn local_addr(&self) -> SocketAddr {
|
||||||
match *self {
|
match *self {
|
||||||
MioListener::Tcp(ref lst) => SocketAddr::Tcp(lst.local_addr().unwrap()),
|
MioListener::Tcp(ref lst) => lst
|
||||||
|
.local_addr()
|
||||||
|
.map(SocketAddr::Tcp)
|
||||||
|
.unwrap_or(SocketAddr::Unknown),
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
MioListener::Uds(ref lst) => SocketAddr::Uds(lst.local_addr().unwrap()),
|
MioListener::Uds(ref lst) => lst
|
||||||
|
.local_addr()
|
||||||
|
.map(SocketAddr::Uds)
|
||||||
|
.unwrap_or(SocketAddr::Unknown),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,14 +116,15 @@ impl fmt::Debug for MioListener {
|
||||||
impl fmt::Display for MioListener {
|
impl fmt::Display for MioListener {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
match *self {
|
match *self {
|
||||||
MioListener::Tcp(ref lst) => write!(f, "{}", lst.local_addr().ok().unwrap()),
|
MioListener::Tcp(ref lst) => write!(f, "{:?}", lst),
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
MioListener::Uds(ref lst) => write!(f, "{:?}", lst.local_addr().ok().unwrap()),
|
MioListener::Uds(ref lst) => write!(f, "{:?}", lst),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) enum SocketAddr {
|
pub(crate) enum SocketAddr {
|
||||||
|
Unknown,
|
||||||
Tcp(StdSocketAddr),
|
Tcp(StdSocketAddr),
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
Uds(mio::net::SocketAddr),
|
Uds(mio::net::SocketAddr),
|
||||||
|
@ -126,9 +133,10 @@ pub(crate) enum SocketAddr {
|
||||||
impl fmt::Display for SocketAddr {
|
impl fmt::Display for SocketAddr {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
match *self {
|
match *self {
|
||||||
SocketAddr::Tcp(ref addr) => write!(f, "{}", addr),
|
Self::Unknown => write!(f, "Unknown SocketAddr"),
|
||||||
|
Self::Tcp(ref addr) => write!(f, "{}", addr),
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
SocketAddr::Uds(ref addr) => write!(f, "{:?}", addr),
|
Self::Uds(ref addr) => write!(f, "{:?}", addr),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,9 +144,10 @@ impl fmt::Display for SocketAddr {
|
||||||
impl fmt::Debug for SocketAddr {
|
impl fmt::Debug for SocketAddr {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
match *self {
|
match *self {
|
||||||
SocketAddr::Tcp(ref addr) => write!(f, "{:?}", addr),
|
Self::Unknown => write!(f, "Unknown SocketAddr"),
|
||||||
|
Self::Tcp(ref addr) => write!(f, "{:?}", addr),
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
SocketAddr::Uds(ref addr) => write!(f, "{:?}", addr),
|
Self::Uds(ref addr) => write!(f, "{:?}", addr),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue