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.