Struct tokio::net::UnixListener [−][src]
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 Runtime::enter
function.
pub fn from_std(listener: UnixListener) -> Result<UnixListener>
[src]
Creates new UnixListener
from a std::os::unix::net::UnixListener
.
This function is intended to be used to wrap a UnixListener from the standard library in the Tokio equivalent. The conversion assumes nothing about the underlying listener; it is left up to the user to set it in non-blocking mode.
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 Runtime::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(&self) -> Result<(UnixStream, SocketAddr)>
[src]
Accepts a new incoming connection to this listener.
pub fn poll_accept(
&self,
cx: &mut Context<'_>
) -> Poll<Result<(UnixStream, SocketAddr)>>
[src]
&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.
When ready, the most recent task that called poll_accept
is notified.
The caller is responsible to ensure that poll_accept
is called from a
single task. Failing to do this could result in tasks hanging.
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>>
pub 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(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,
pub 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,
fn throttle(self, duration: Duration) -> Throttle<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.
pub 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.
pub 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,