[][src]Struct uds::nonblocking::UnixSeqpacketListener

#[repr(transparent)]pub struct UnixSeqpacketListener { /* fields omitted */ }

A non-blocking unix domain listener for sequential-packet connections.

Differs from UnixSeqpacketListener in that accept() returns non-blocking connection sockets and doesn't block if no client connect()ions are pending.

This type can be used with mio if the mio feature is enabled:

uds = { version = "x.y", features=["mio"] }

Examples

use uds::nonblocking::{UnixSeqpacketListener, UnixSeqpacketConn};
use std::io::ErrorKind;

let listener = UnixSeqpacketListener::bind("nonblocking_seqpacket_listener.socket")
    .expect("Cannot create nonblocking seqpacket listener");

// doesn't block if no connections are waiting:
assert_eq!(listener.accept_unix_addr().unwrap_err().kind(), ErrorKind::WouldBlock);

// returned connections are nonblocking:
let _client = UnixSeqpacketConn::connect("nonblocking_seqpacket_listener.socket").unwrap();
let (conn, _addr) = listener.accept_unix_addr().unwrap();
assert_eq!(conn.recv(&mut[0u8; 20]).unwrap_err().kind(), ErrorKind::WouldBlock);

Implementations

impl NonblockingUnixSeqpacketListener[src]

pub fn bind<P: AsRef<Path>>(path: P) -> Result<Self, Error>[src]

Connect to an unix seqpacket server listening at path.

This is a wrapper around connect_unix_addr() for convenience and compatibility with std.

pub fn bind_unix_addr(addr: &UnixSocketAddr) -> Result<Self, Error>[src]

accept_unix_addr() doesn't block if no connections are waiting:

let _ = std::fs::remove_file("nonblocking_seqpacket_listener.socket");
let listener = UnixSeqpacketListener::bind("nonblocking_seqpacket_listener.socket")
    .expect("Cannot create nonblocking seqpacket listener");
assert_eq!(listener.accept_unix_addr().unwrap_err().kind(), ErrorKind::WouldBlock);
std::fs::remove_file("nonblocking_seqpacket_listener.socket").unwrap();

pub fn local_unix_addr(&self) -> Result<UnixSocketAddr, Error>[src]

Get the address this listener was bound to.

pub fn accept_unix_addr(
    &self
) -> Result<(NonblockingUnixSeqpacketConn, UnixSocketAddr), Error>
[src]

Accept a non-blocking connection, non-blockingly.

pub fn try_clone(&self) -> Result<Self, Error>[src]

Create a new file descriptor listening for the same connections.

Trait Implementations

impl AsRawFd for NonblockingUnixSeqpacketListener[src]

impl Debug for NonblockingUnixSeqpacketListener[src]

impl Drop for NonblockingUnixSeqpacketListener[src]

impl Evented for NonblockingUnixSeqpacketListener[src]

impl FromRawFd for NonblockingUnixSeqpacketListener[src]

impl IntoRawFd for NonblockingUnixSeqpacketListener[src]

impl Source for NonblockingUnixSeqpacketListener[src]

impl<'a> Source for &'a NonblockingUnixSeqpacketListener[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.