/// Reads the specified number of bytes from the socket, if possible.
///
/// # Parameters
/// - `task`: The task to which the user buffers belong (i.e., the task to which the read bytes
///           are written.
/// - `user_buffers`: The buffers to write the read data into.
///
/// Returns the number of bytes that were written to the user buffers, as well as any ancillary
/// data associated with the read messages.
Reads the specified number of bytes from the socket, if possible.
Reads the specified number of bytes from the socket if possible .
pub fn read(
        &self,
        task: &Task,
        user_buffers: &mut UserBufferIterator<'_>,
        flags: SocketMessageFlags,
    ) -> Result<MessageReadInfo, Errno> {
        self.lock().read(task, user_buffers, self.socket_type, flags)
    }
pub fn read ( & self , task : & Task , user_buffers : & mut UserBufferIterator < ' _ > , flags : SocketMessageFlags , ) -> Result < MessageReadInfo , Errno > { self . lock ( ) . read ( task , user_buffers , self . socket_type , flags ) }
Reads the specified number of bytes from the socket, if possible.
Reads the specified number of bytes from the socket if possible .
&self
task
&Task
The task to which the user buffers belong (i.e., the task to which the read bytes
are written.
The task to which the user buffers belong ( i . e . the task to which the read bytes are written .
user_buffers
&mut UserBufferIterator<'_>
The buffers to write the read data into.

Returns the number of bytes that were written to the user buffers, as well as any ancillary
data associated with the read messages.
The buffers to write the read data into . Returns the number of bytes that were written to the user buffers as well as any ancillary data associated with the read messages .
flags
SocketMessageFlags