[−][src]Struct tokio::net::UnixListener
A Unix socket which can accept connections from other Unix sockets.
You can accept a new connection by using the accept method. Alternatively UnixListener
implements the Stream trait, which allows you to use the listener in places that want a
stream. The 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(); while let Some(stream) = listener.next().await { match stream { Ok(stream) => { println!("new client!"); } Err(e) => { /* connection failed */ } } } }
Implementations
impl UnixListener[src]
pub fn bind<P>(path: P) -> Result<UnixListener> where
P: AsRef<Path>, [src]
P: AsRef<Path>,
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.
pub fn from_std(listener: UnixListener) -> Result<UnixListener>[src]
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.
pub fn local_addr(&self) -> Result<SocketAddr>[src]
Returns the local socket address of this listener.
pub fn take_error(&self) -> Result<Option<Error>>[src]
Returns the value of the SO_ERROR option.
pub async fn accept<'_>(&'_ mut self) -> Result<(UnixStream, SocketAddr)>[src]
Accepts a new incoming connection to this listener.
pub fn poll_accept(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(UnixStream, SocketAddr)>>[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(UnixStream, SocketAddr)>>
Polls to accept a new incoming connection to this listener.
If there is no connection to accept, Poll::Pending is returned and
the current task will be notified by a waker.
pub fn incoming(&mut self) -> Incoming<'_>[src]
Returns a stream over the connections being received on this listener.
Note that UnixListener also directly implements Stream.
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
impl AsRawFd for UnixListener[src]
impl Debug for UnixListener[src]
impl Stream for UnixListener[src]
type Item = Result<UnixStream>
Values yielded by the stream.
fn poll_next(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Option<Self::Item>>[src]
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Option<Self::Item>>
fn size_hint(&self) -> (usize, Option<usize>)[src]
impl TryFrom<UnixListener> for UnixListener[src]
type Error = Error
The type returned in the event of a conversion error.
fn try_from(value: UnixListener) -> Result<Self, Self::Error>[src]
Consumes value, returning the mio I/O object.
See PollEvented::into_inner for more details about
resource deregistration that happens during the call.
impl TryFrom<UnixListener> for UnixListener[src]
type Error = Error
The type returned in the event of a conversion error.
fn try_from(stream: UnixListener) -> Result<Self>[src]
Consumes stream, returning the tokio I/O object.
This is equivalent to
UnixListener::from_std(stream).
Auto Trait Implementations
impl !RefUnwindSafe for UnixListener
impl Send for UnixListener
impl Sync for UnixListener
impl Unpin for UnixListener
impl !UnwindSafe for UnixListener
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut Tⓘ[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<St> StreamExt for St where
St: Stream + ?Sized, [src]
St: Stream + ?Sized,
fn next(&mut self) -> Next<'_, Self> where
Self: Unpin, [src]
Self: Unpin,
fn try_next<T, E>(&mut self) -> TryNext<'_, Self> where
Self: Stream<Item = Result<T, E>> + Unpin, [src]
Self: Stream<Item = Result<T, E>> + Unpin,
fn map<T, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> T,
Self: Sized, [src]
F: FnMut(Self::Item) -> T,
Self: Sized,
fn merge<U>(self, other: U) -> Merge<Self, U> where
U: Stream<Item = Self::Item>,
Self: Sized, [src]
U: Stream<Item = Self::Item>,
Self: Sized,
fn filter<F>(self, f: F) -> Filter<Self, F> where
F: FnMut(&Self::Item) -> bool,
Self: Sized, [src]
F: FnMut(&Self::Item) -> bool,
Self: Sized,
fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F> where
F: FnMut(Self::Item) -> Option<T>,
Self: Sized, [src]
F: FnMut(Self::Item) -> Option<T>,
Self: Sized,
fn fuse(self) -> Fuse<Self> where
Self: Sized, [src]
Self: Sized,
fn take(self, n: usize) -> Take<Self> where
Self: Sized, [src]
Self: Sized,
fn take_while<F>(self, f: F) -> TakeWhile<Self, F> where
F: FnMut(&Self::Item) -> bool,
Self: Sized, [src]
F: FnMut(&Self::Item) -> bool,
Self: Sized,
fn skip(self, n: usize) -> Skip<Self> where
Self: Sized, [src]
Self: Sized,
fn skip_while<F>(self, f: F) -> SkipWhile<Self, F> where
F: FnMut(&Self::Item) -> bool,
Self: Sized, [src]
F: FnMut(&Self::Item) -> bool,
Self: Sized,
fn all<F>(&mut self, f: F) -> AllFuture<'_, Self, F> where
Self: Unpin,
F: FnMut(Self::Item) -> bool, [src]
Self: Unpin,
F: FnMut(Self::Item) -> bool,
fn any<F>(&mut self, f: F) -> AnyFuture<'_, Self, F> where
Self: Unpin,
F: FnMut(Self::Item) -> bool, [src]
Self: Unpin,
F: FnMut(Self::Item) -> bool,
fn chain<U>(self, other: U) -> Chain<Self, U> where
U: Stream<Item = Self::Item>,
Self: Sized, [src]
U: Stream<Item = Self::Item>,
Self: Sized,
fn fold<B, F>(self, init: B, f: F) -> FoldFuture<Self, B, F> where
Self: Sized,
F: FnMut(B, Self::Item) -> B, [src]
Self: Sized,
F: FnMut(B, Self::Item) -> B,
fn collect<T>(self) -> Collect<Self, T> where
T: FromStream<Self::Item>,
Self: Sized, [src]
T: FromStream<Self::Item>,
Self: Sized,
fn timeout(self, duration: Duration) -> Timeout<Self> where
Self: Sized, [src]
Self: Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<S, T, E> TryStream for S where
S: Stream<Item = Result<T, E>> + ?Sized, [src]
S: Stream<Item = Result<T, E>> + ?Sized,