pub fn write(
        &self,
        task: &Task,
        user_buffers: &mut UserBufferIterator<'_>,
        dest_address: &mut Option<SocketAddress>,
        ancillary_data: &mut Option<AncillaryData>,
    ) -> Result<usize, Errno> {
        let (peer, local_address) = {
            let inner = self.lock();
            (inner.peer().ok_or_else(|| errno!(EPIPE))?.clone(), inner.address.clone())
        };
        if dest_address.is_some() {
            return error!(EISCONN);
        }
        let mut peer = peer.lock();
        peer.write(task, user_buffers, local_address, ancillary_data, self.socket_type)
    }
/// Writes the data in the provided user buffers to this socket.
///
/// # Parameters
/// - `task`: The task to which the user buffers belong, used to read the memory.
/// - `user_buffers`: The data to write to the socket.
/// - `ancillary_data`: Optional ancillary data (a.k.a., control message) to write.
///
/// Returns the number of bytes that were read from the user buffers and written to the socket,
/// not counting the ancillary data.
Writes the data in the provided user buffers to this socket.
Writes the data in the provided user buffers to this socket .
pub fn write(
        &self,
        task: &Task,
        user_buffers: &mut UserBufferIterator<'_>,
        dest_address: &mut Option<SocketAddress>,
        ancillary_data: &mut Option<AncillaryData>,
    ) -> Result<usize, Errno> {
        let (peer, local_address) = {
            let inner = self.lock();
            (inner.peer().ok_or_else(|| errno!(EPIPE))?.clone(), inner.address.clone())
        };
        if dest_address.is_some() {
            return error!(EISCONN);
        }
        let mut peer = peer.lock();
        peer.write(task, user_buffers, local_address, ancillary_data, self.socket_type)
    }
pub fn write ( & self , task : & Task , user_buffers : & mut UserBufferIterator < ' _ > , dest_address : & mut Option < SocketAddress > , ancillary_data : & mut Option < AncillaryData > , ) -> Result < usize , Errno > { let ( peer , local_address ) = { let inner = self . lock ( ) ; ( inner . peer ( ) . ok_or_else ( | | errno ! ( EPIPE ) ) ? . clone ( ) , inner . address . clone ( ) ) } ; if dest_address . is_some ( ) { return error ! ( EISCONN ) ; } let mut peer = peer . lock ( ) ; peer . write ( task , user_buffers , local_address , ancillary_data , self . socket_type ) }
Writes the data in the provided user buffers to this socket.
Writes the data in the provided user buffers to this socket .
&self
task
&Task
user_buffers
&mut UserBufferIterator<'_>
dest_address
&mut Option<SocketAddress>
ancillary_data
&mut Option<AncillaryData>
&self
task
&Task
The task to which the user buffers belong, used to read the memory.
The task to which the user buffers belong used to read the memory .
user_buffers
&mut UserBufferIterator<'_>
The data to write to the socket.
The data to write to the socket .
dest_address
&mut Option<SocketAddress>
ancillary_data
&mut Option<AncillaryData>
Optional ancillary data (a.k.a., control message) to write.

Returns the number of bytes that were read from the user buffers and written to the socket,
not counting the ancillary data.
Optional ancillary data ( a . k . a . control message ) to write . Returns the number of bytes that were read from the user buffers and written to the socket not counting the ancillary data .