Struct io_uring::opcode::RecvMsgMulti
source · pub struct RecvMsgMulti { /* private fields */ }
Expand description
Receive multiple messages on a socket, equivalent to recvmsg(2)
.
Parameters: msg: For this multishot variant of ResvMsg, only the msg_namelen and msg_controllen fields are relevant. buf_group: The id of the provided buffer pool to use for each received message.
See also the description of SendMsg
and types::RecvMsgOut
.
The multishot version allows the application to issue a single receive request, which repeatedly posts a CQE when data is available. It requires the MSG_WAITALL flag is not set. Each CQE will take a buffer out of a provided buffer pool for receiving. The application should check the flags of each CQE, regardless of its result. If a posted CQE does not have the IORING_CQE_F_MORE flag set then the multishot receive will be done and the application should issue a new request.
Unlike RecvMsg
, this multishot recvmsg will prepend a struct which describes the layout
of the rest of the buffer in combination with the initial msghdr structure submitted with
the request. Use types::RecvMsgOut
to parse the data received and access its
components.
The recvmsg multishot variant is available since kernel 6.0.
Implementations§
source§impl RecvMsgMulti
impl RecvMsgMulti
pub fn new(fd: impl UseFixed, msg: *const msghdr, buf_group: u16) -> Self
sourcepub const CODE: u8 = 10u8
pub const CODE: u8 = 10u8
The opcode of the operation. This can be passed to
Probe::is_supported
to check if this operation is
supported with the current kernel.