Struct UnixDatagram

Source
pub struct UnixDatagram { /* private fields */ }
Expand description

An I/O object representing a Unix datagram socket.

Implementations§

Source§

impl UnixDatagram

Source

pub fn bind(path: impl AsRef<Path>) -> Result<UnixDatagram>

Creates a new UnixDatagram bound to the specified path.

§Examples
use futures_net::uds::UnixDatagram;

let sock = UnixDatagram::bind("/tmp/sock")?;
Source

pub fn pair() -> Result<(UnixDatagram, UnixDatagram)>

Creates an unnamed pair of connected sockets.

This function will create a pair of interconnected Unix sockets for communicating back and forth between one another. Each socket will be associated with the event loop whose handle is also provided.

§Examples
use futures_net::uds::UnixDatagram;

let (sock1, sock2) = UnixDatagram::pair()?;
Source

pub fn unbound() -> Result<UnixDatagram>

Creates a new UnixDatagram which is not bound to any address.

§Examples
use futures_net::uds::UnixDatagram;

let sock = UnixDatagram::unbound()?;
Source

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

Returns the local address that this socket is bound to.

§Examples
use futures_net::uds::UnixDatagram;

let stream = UnixDatagram::bind("/tmp/sock")?;
let addr = stream.local_addr()?;
Source

pub fn peer_addr(&self) -> Result<SocketAddr>

Returns the address of this socket’s peer.

The connect method will connect the socket to a peer.

§Examples
use futures_net::uds::UnixDatagram;

let stream = UnixDatagram::bind("/tmp/sock")?;
let addr = stream.peer_addr()?;
Source

pub fn shutdown(&self, how: Shutdown) -> Result<()>

Shut down the read, write, or both halves of this connection.

This function will cause all pending and future I/O calls on the specified portions to immediately return with an appropriate value (see the documentation of Shutdown).

§Examples
use futures_net::uds::UnixDatagram;
use std::net::Shutdown;

let stream = UnixDatagram::bind("/tmp/sock")?;
stream.shutdown(Shutdown::Both)?;
Source

pub fn send_to<'a, 'b>( &'a mut self, buf: &'b [u8], target: &'b PathBuf, ) -> SendTo<'a, 'b>

Sends data on the socket to the given address. On success, returns the number of bytes written.

§Examples
use futures_net::udp::UdpSocket;

const THE_MERCHANT_OF_VENICE: &[u8] = b"
    If you prick us, do we not bleed?
    If you tickle us, do we not laugh?
    If you poison us, do we not die?
    And if you wrong us, shall we not revenge?
";

let addr = "/tmp/out.socket".parse()?;
let target = "/tmp/in.socket".parse()?;
let mut socket = UdpSocket::bind(&addr)?;

socket.send_to(THE_MERCHANT_OF_VENICE, &target).await?;
Source

pub fn recv_from<'a, 'b>(&'a mut self, buf: &'b mut [u8]) -> RecvFrom<'a, 'b>

Receives data from the socket. On success, returns the number of bytes read and the address from whence the data came.

§Exampes
use futures_net::udp::UdpSocket;

let addr = "/tmp/in.socket".parse()?;
let mut socket = UdpSocket::bind(&addr)?;
let mut buf = vec![0; 1024];

socket.recv_from(&mut buf).await?;

Trait Implementations§

Source§

impl AsRawFd for UnixDatagram

Source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
Source§

impl AsyncDatagram for UnixDatagram

Source§

type Sender = SocketAddr

Specifies which target to send the data to.
Source§

type Receiver = PathBuf

Specifies which target the data was received from.
Source§

type Err = Error

The type of failures yielded by this trait.
Source§

fn poll_send_to( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], receiver: &Self::Receiver, ) -> Poll<Result<usize>>

Sends data on the IO interface to the specified target. Read more
Source§

fn poll_recv_from( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<(usize, Self::Sender)>>

Receives data from the IO interface. Read more
Source§

impl AsyncReadReady for UnixDatagram

Source§

fn poll_read_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<Self::Ok, Self::Err>>

Test whether this socket is ready to be read or not.

Source§

type Ok = Ready

The type of successful values yielded by this trait.
Source§

type Err = Error

The type of failures yielded by this trait.
Source§

fn poll_read_ready_unpin( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<Self::Ok, Self::Err>>
where Self: Sized + Unpin,

A convenience for calling AsyncReadReady::poll_read_ready on Unpin types.
Source§

impl AsyncWriteReady for UnixDatagram

Source§

fn poll_write_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<Self::Ok, Self::Err>>

Test whether this socket is ready to be written to or not.

Source§

type Ok = Ready

The type of successful values yielded by this trait.
Source§

type Err = Error

The type of failures yielded by this trait.
Source§

fn poll_write_ready_unpin( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<Self::Ok, Self::Err>>
where Self: Sized + Unpin,

A convenience for calling AsyncWriteReady::poll_write_ready on Unpin types.
Source§

impl Debug for UnixDatagram

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TakeError for UnixDatagram

Source§

fn take_error(&self) -> Result<Option<Self::Ok>, Self::Err>

Returns the value of the SO_ERROR option.

§Examples
use async_ready::TakeError;
use futures_net::uds::UnixDatagram;

let stream = UnixDatagram::bind("/tmp/sock")?;
if let Ok(Some(err)) = stream.take_error() {
    println!("Got error: {:?}", err);
}
Source§

type Ok = Error

The type of successful values yielded by this trait.
Source§

type Err = Error

The type of failures yielded by this trait.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.