Struct unix_socket::UnixListener [] [src]

pub struct UnixListener {
    // some fields omitted
}

A structure representing a Unix domain socket server.

Examples

use std::thread;
use unix_socket::{UnixStream, UnixListener};

fn handle_client(stream: UnixStream) {
    // ...
}

let listener = UnixListener::bind("/path/to/the/socket").unwrap();

// accept connections and process them, spawning a new thread for each one
for stream in listener.incoming() {
    match stream {
        Ok(stream) => {
            /* connection succeeded */
            thread::spawn(|| handle_client(stream));
        }
        Err(err) => {
            /* connection failed */
            break;
        }
    }
}

// close the listener socket
drop(listener);

Methods

impl UnixListener

fn bind<P: AsRef<Path>>(path: P) -> Result<UnixListener>

Creates a new UnixListener bound to the specified socket.

Linux provides, as a nonportable extension, a separate "abstract" address namespace as opposed to filesystem-based addressing. If path begins with a null byte, it will be interpreted as an "abstract" address. Otherwise, it will be interpreted as a "pathname" address, corresponding to a path on the filesystem.

fn accept(&self) -> Result<(UnixStream, SocketAddr)>

Accepts a new incoming connection to this listener.

This function will block the calling thread until a new Unix connection is established. When established, the corersponding UnixStream and the remote peer's address will be returned.

fn try_clone(&self) -> Result<UnixListener>

Creates a new independently owned handle to the underlying socket.

The returned UnixListener is a reference to the same socket that this object references. Both handles can be used to accept incoming connections and options set on one listener will affect the other.

fn local_addr(&self) -> Result<SocketAddr>

Returns the local socket address of this listener.

fn set_nonblocking(&self, nonblocking: bool) -> Result<()>

Moves the socket into or out of nonblocking mode.

fn take_error(&self) -> Result<Option<Error>>

Returns the value of the SO_ERROR option.

fn incoming<'a>(&'a self) -> Incoming<'a>

Returns an iterator over incoming connections.

The iterator will never return None and will also not yield the peer's SocketAddr structure.

Trait Implementations

impl Debug for UnixListener

fn fmt(&self, fmt: &mut Formatter) -> Result

impl AsRawFd for UnixListener

fn as_raw_fd(&self) -> RawFd

impl FromRawFd for UnixListener

unsafe fn from_raw_fd(fd: RawFd) -> UnixListener

impl IntoRawFd for UnixListener

fn into_raw_fd(self) -> RawFd

impl<'a> IntoIterator for &'a UnixListener

type Item = Result<UnixStream>

type IntoIter = Incoming<'a>

fn into_iter(self) -> Incoming<'a>