Struct Socket

Source
pub struct Socket { /* private fields */ }

Implementations§

Source§

impl Socket

Source

pub fn new_socketpair() -> Result<(Socket, Socket)>

Creates a socket pair (AF_UNIX/SOCK_SEQPACKET).

Both sockets are close-on-exec by default.

Source

pub fn no_cloexec(&mut self) -> Result<()>

Disables close-on-exec on the socket (to preserve it across process forks).

Source

pub fn recv_into_iovec<F: Default + AsMut<[RawFd]>>( &mut self, iov: &mut [IoSliceMut<'_>], ) -> Result<(usize, Option<F>)>

Reads bytes from the socket into the given scatter/gather array.

If file descriptors were passed, returns them too. To receive file descriptors, you need to instantiate the type parameter F as [RawFd; n], where n is the number of descriptors you want to receive.

Received file descriptors are set close-on-exec.

Source

pub fn recv_into_slice<F: Default + AsMut<[RawFd]>>( &mut self, buf: &mut [u8], ) -> Result<(usize, Option<F>)>

Reads bytes from the socket into the given buffer.

If file descriptors were passed, returns them too. To receive file descriptors, you need to instantiate the type parameter F as [RawFd; n], where n is the number of descriptors you want to receive.

Received file descriptors are set close-on-exec.

Source

pub fn recv_into_buf<F: Default + AsMut<[RawFd]>>( &mut self, buf_size: usize, ) -> Result<(usize, Vec<u8>, Option<F>)>

Reads bytes from the socket into a new buffer.

If file descriptors were passed, returns them too. To receive file descriptors, you need to instantiate the type parameter F as [RawFd; n], where n is the number of descriptors you want to receive.

Received file descriptors are set close-on-exec.

Source

pub fn recv_into_buf_with_len<F: Default + AsMut<[RawFd]>>( &mut self, buf_size: usize, ) -> Result<(usize, Vec<u8>, u64, Option<F>)>

Reads bytes from the socket into a new buffer, also reading the first 64 bits as length. The resulting buffer is truncated to that length.

If file descriptors were passed, returns them too. To receive file descriptors, you need to instantiate the type parameter F as [RawFd; n], where n is the number of descriptors you want to receive.

Received file descriptors are set close-on-exec.

Source

pub unsafe fn recv_struct_raw<T, F: Default + AsMut<[RawFd]>>( &mut self, ) -> Result<(T, Option<F>)>

See recv_struct for docs

§Safety
  • For some types (e.g.), not every bit pattern is allowed. If bytes, read from socket aren’t correct, that’s UB.
  • Some types mustn’t change their memory location (see std::pin::Pin). Sending object of such a type is UB.
Source

pub fn send_iovec( &mut self, iov: &[IoSlice<'_>], fds: Option<&[RawFd]>, ) -> Result<usize>

Sends bytes from scatter-gather vectors over the socket.

Optionally passes file descriptors with the message.

Source

pub fn send_slice( &mut self, data: &[u8], fds: Option<&[RawFd]>, ) -> Result<usize>

Sends bytes from a slice over the socket.

Optionally passes file descriptors with the message.

Source

pub fn send_slice_with_len( &mut self, data: &[u8], fds: Option<&[RawFd]>, ) -> Result<usize>

Sends bytes from a slice over the socket, prefixing with the length (as a 64-bit unsigned integer).

Optionally passes file descriptors with the message.

Source

pub unsafe fn send_struct_raw<T>( &mut self, data: &T, fds: Option<&[RawFd]>, ) -> Result<usize>

See send_struct for docs.

§Safety
  • T must not have padding bytes.
  • Also, if T violates recv_struct_raw safety preconditions, receiving it will trigger undefined behavior.

Trait Implementations§

Source§

impl AsRawFd for Socket

Source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
Source§

impl Drop for Socket

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl FromRawFd for Socket

Source§

unsafe fn from_raw_fd(fd: RawFd) -> Socket

Constructs a new instance of Self from the given raw file descriptor. Read more
Source§

impl IntoRawFd for Socket

Source§

fn into_raw_fd(self) -> RawFd

Consumes this object, returning the raw underlying file descriptor. Read more

Auto Trait Implementations§

§

impl Freeze for Socket

§

impl RefUnwindSafe for Socket

§

impl Send for Socket

§

impl Sync for Socket

§

impl Unpin for Socket

§

impl UnwindSafe for Socket

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.