Struct compio_driver::Proactor
source · pub struct Proactor { /* private fields */ }Expand description
Low-level actions of completion-based IO. It owns the operations to keep the driver safe.
Implementations§
source§impl Proactor
impl Proactor
sourcepub fn with_entries(entries: u32) -> Result<Self>
pub fn with_entries(entries: u32) -> Result<Self>
Create Proactor with specified entries.
sourcepub fn attach(&mut self, fd: RawFd) -> Result<()>
pub fn attach(&mut self, fd: RawFd) -> Result<()>
Attach an fd to the driver. It will cause unexpected result to attach the handle with one driver and push an op to another driver.
Platform specific
- IOCP: it will be attached to the completion port. An fd could only be
attached to one driver, and could only be attached once, even if you
try_cloneit. - io-uring: it will do nothing and return
Ok(()). - polling: it will initialize inner queue and register to the driver. On Linux and Android, if the fd is a normal file or a directory, this method will do nothing.
sourcepub fn cancel(&mut self, user_data: usize)
pub fn cancel(&mut self, user_data: usize)
Cancel an operation with the pushed user-defined data.
The cancellation is not reliable. The underlying operation may continue,
but just don’t return from Proactor::poll. Therefore, although an
operation is cancelled, you should not reuse its user_data.
It is well-defined to cancel before polling. If the submitted operation contains a cancelled user-defined data, the operation will be ignored.
sourcepub fn push<T: OpCode + 'static>(
&mut self,
op: T
) -> PushEntry<usize, BufResult<usize, T>>
pub fn push<T: OpCode + 'static>( &mut self, op: T ) -> PushEntry<usize, BufResult<usize, T>>
Push an operation into the driver, and return the unique key, called user-defined data, associated with it.