pub struct UnixListener { /* private fields */ }
uds
only.Expand description
A Unix socket which can accept connections from other Unix sockets.
Implementations§
Source§impl UnixListener
impl UnixListener
Sourcepub fn bind<P>(path: P) -> Result<UnixListener>
pub fn bind<P>(path: P) -> Result<UnixListener>
Creates a new UnixListener
bound to the specified path.
§Panics
This function panics if thread-local runtime is not set.
The runtime is usually set implicitly when this function is called
from a future driven by a tokio runtime, otherwise runtime can be set
explicitly with Handle::enter
function.
Sourcepub fn from_std(listener: UnixListener) -> Result<UnixListener>
pub fn from_std(listener: UnixListener) -> Result<UnixListener>
Consumes a UnixListener
in the standard library and returns a
nonblocking UnixListener
from this crate.
The returned listener will be associated with the given event loop
specified by handle
and is ready to perform I/O.
§Panics
This function panics if thread-local runtime is not set.
The runtime is usually set implicitly when this function is called
from a future driven by a tokio runtime, otherwise runtime can be set
explicitly with Handle::enter
function.
Sourcepub fn local_addr(&self) -> Result<SocketAddr>
pub fn local_addr(&self) -> Result<SocketAddr>
Returns the local socket address of this listener.
Sourcepub fn take_error(&self) -> Result<Option<Error>>
pub fn take_error(&self) -> Result<Option<Error>>
Returns the value of the SO_ERROR
option.
Sourcepub async fn accept(&mut self) -> Result<(UnixStream, SocketAddr)>
pub async fn accept(&mut self) -> Result<(UnixStream, SocketAddr)>
Accepts a new incoming connection to this listener.
Sourcepub fn incoming(&mut self) -> Incoming<'_>
pub fn incoming(&mut self) -> Incoming<'_>
Returns a stream over the connections being received on this listener.
The returned stream will never return None
and will also not yield the
peer’s SocketAddr
structure. Iterating over it is equivalent to
calling accept in a loop.
§Errors
Note that accepting a connection can lead to various errors and not all of them are necessarily fatal ‒ for example having too many open file descriptors or the other side closing the connection while it waits in an accept queue. These would terminate the stream if not handled in any way.
§Examples
use tokio::net::UnixListener;
use tokio::stream::StreamExt;
#[tokio::main]
async fn main() {
let mut listener = UnixListener::bind("/path/to/the/socket").unwrap();
let mut incoming = listener.incoming();
while let Some(stream) = incoming.next().await {
match stream {
Ok(stream) => {
println!("new client!");
}
Err(e) => { /* connection failed */ }
}
}
}
Trait Implementations§
Source§impl AsRawFd for UnixListener
impl AsRawFd for UnixListener
Source§impl Debug for UnixListener
impl Debug for UnixListener
Source§impl TryFrom<UnixListener> for UnixListener
impl TryFrom<UnixListener> for UnixListener
Source§impl TryFrom<UnixListener> for UnixListener
impl TryFrom<UnixListener> for UnixListener
Source§fn try_from(stream: UnixListener) -> Result<Self>
fn try_from(stream: UnixListener) -> Result<Self>
Consumes stream, returning the tokio I/O object.
This is equivalent to
UnixListener::from_std(stream)
.